2018-03-24 00:58:24 +00:00
|
|
|
#ifndef LIB_LINKED_LIST_H
|
|
|
|
#define LIB_LINKED_LIST_H
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-01-26 08:43:22 +00:00
|
|
|
#include "type.h"
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
struct linked_list_node
|
2017-02-01 03:26:08 +00:00
|
|
|
{
|
2018-03-24 00:58:24 +00:00
|
|
|
struct linked_list_node *prev;
|
|
|
|
struct linked_list_node *next;
|
|
|
|
};
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
struct linked_list
|
2017-02-01 03:26:08 +00:00
|
|
|
{
|
2018-03-24 00:58:24 +00:00
|
|
|
struct linked_list_node *head;
|
|
|
|
struct linked_list_node *tail;
|
|
|
|
};
|
2017-02-01 03:26:08 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Returns true if current list node == your node
|
|
|
|
* false otherwise
|
|
|
|
*/
|
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
void SXAPI lb_linked_list_init(struct linked_list *list);
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
int32 SXAPI lb_linked_list_size(struct linked_list *list);
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
void SXAPI lb_linked_list_push_front(struct linked_list *list, struct linked_list_node *node);
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
void SXAPI lb_linked_list_push_back(struct linked_list *list, struct linked_list_node *node);
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
struct linked_list_node *SXAPI lb_linked_list_pop_front(struct linked_list *list);
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
struct linked_list_node *SXAPI lb_linked_list_pop_back(struct linked_list *list);
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
void SXAPI lb_linked_list_insert(struct linked_list *list, int32 index, struct linked_list_node *node);
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
void SXAPI lb_linked_list_insert_ref(struct linked_list *list, struct linked_list_node *prev_node, struct linked_list_node *node);
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
struct linked_list_node *SXAPI lb_linked_list_remove(struct linked_list *list, int32 index);
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
struct linked_list_node *SXAPI lb_linked_list_remove_ref(struct linked_list *list, struct linked_list_node *node);
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
struct linked_list_node *SXAPI lb_linked_list_get(struct linked_list *list, int32 index);
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
struct linked_list_node *SXAPI lb_linked_list_next(struct linked_list_node *node);
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
struct linked_list_node *SXAPI lb_linked_list_prev(struct linked_list_node *node);
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
struct linked_list_node *SXAPI lb_linked_list_first(struct linked_list *list);
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
struct linked_list_node *SXAPI lb_linked_list_last(struct linked_list *list);
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
int32 SXAPI lb_linked_list_search(struct linked_list *list, struct linked_list_node *target,
|
|
|
|
callback_func equals);
|
2017-02-01 03:26:08 +00:00
|
|
|
|
2018-03-24 00:58:24 +00:00
|
|
|
#endif
|