bond/include/lib/linked_list.h

57 lines
1.8 KiB
C
Raw Normal View History

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