2018-01-26 08:43:22 +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
|
|
|
|
|
|
|
typedef struct _linked_list_node_t
|
|
|
|
{
|
2018-02-18 04:06:57 +00:00
|
|
|
struct _linked_list_node_t *prev;
|
|
|
|
struct _linked_list_node_t *next;
|
2017-02-01 03:26:08 +00:00
|
|
|
} linked_list_node_t;
|
|
|
|
|
|
|
|
typedef struct _linked_list_t
|
|
|
|
{
|
2018-02-18 04:06:57 +00:00
|
|
|
linked_list_node_t *head;
|
|
|
|
linked_list_node_t *tail;
|
2017-02-01 03:26:08 +00:00
|
|
|
} linked_list_t;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Returns true if current list node == your node
|
|
|
|
* false otherwise
|
|
|
|
*/
|
|
|
|
|
|
|
|
void KABI lb_linked_list_init(linked_list_t *list);
|
|
|
|
|
|
|
|
int32_t KABI lb_linked_list_size(linked_list_t *list);
|
|
|
|
|
|
|
|
void KABI lb_linked_list_push_front(linked_list_t *list, linked_list_node_t *node);
|
|
|
|
|
|
|
|
void KABI lb_linked_list_push_back(linked_list_t *list, linked_list_node_t *node);
|
|
|
|
|
|
|
|
linked_list_node_t *KABI lb_linked_list_pop_front(linked_list_t *list);
|
|
|
|
|
|
|
|
linked_list_node_t *KABI lb_linked_list_pop_back(linked_list_t *list);
|
|
|
|
|
|
|
|
void KABI lb_linked_list_insert(linked_list_t *list, int32_t index, linked_list_node_t *node);
|
|
|
|
|
|
|
|
void KABI lb_linked_list_insert_ref(linked_list_t *list, linked_list_node_t *prev_node, linked_list_node_t *node);
|
|
|
|
|
|
|
|
linked_list_node_t *KABI lb_linked_list_remove(linked_list_t *list, int32_t index);
|
|
|
|
|
|
|
|
linked_list_node_t *KABI lb_linked_list_remove_ref(linked_list_t *list, linked_list_node_t *node);
|
|
|
|
|
|
|
|
linked_list_node_t *KABI lb_linked_list_get(linked_list_t *list, int32_t index);
|
|
|
|
|
|
|
|
linked_list_node_t *KABI lb_linked_list_next(linked_list_node_t *node);
|
|
|
|
|
|
|
|
linked_list_node_t *KABI lb_linked_list_prev(linked_list_node_t *node);
|
|
|
|
|
|
|
|
linked_list_node_t *KABI lb_linked_list_first(linked_list_t *list);
|
|
|
|
|
|
|
|
linked_list_node_t *KABI lb_linked_list_last(linked_list_t *list);
|
|
|
|
|
|
|
|
int32_t KABI lb_linked_list_search(linked_list_t *list, linked_list_node_t *target,
|
|
|
|
callback_func_t equals);
|
|
|
|
|
|
|
|
#endif
|