ordinary/include/ordinary.h

36 lines
1.1 KiB
C
Raw Normal View History

2022-11-17 07:07:06 +00:00
#ifndef __ORDINARY_H_
#define __ORDINARY_H_
#include <stdint.h>
struct ordinary_node {
struct ordinary_node *prev;
struct ordinary_node *next;
void *val;
};
struct ordinary_list {
struct ordinary_node *head;
struct ordinary_node *tail;
uint32_t count;
uint32_t limit;
};
typedef uint8_t (*callback)(struct ordinary_node *node, uint32_t idx);
void ordinary_list_new(struct ordinary_list *list, uint32_t limit);
2022-11-17 16:05:44 +00:00
void ordinary_list_delete(struct ordinary_list *list);
2022-11-17 07:07:06 +00:00
2022-11-17 16:05:44 +00:00
uint8_t ordinary_list_empty(struct ordinary_list *list);
2022-11-17 07:09:28 +00:00
uint8_t ordinary_list_full(struct ordinary_list *list);
2022-11-17 16:05:44 +00:00
struct ordinary_node *ordinary_list_at(struct ordinary_list *list, uint32_t idx);
2022-11-17 07:07:06 +00:00
struct ordinary_node *ordinary_list_find(struct ordinary_list *list, callback cb);
uint8_t ordinary_list_for(struct ordinary_list *list, callback cb);
2022-11-17 16:05:44 +00:00
struct ordinary_node *ordinary_list_add(struct ordinary_list *list, void *val);
2022-11-25 06:42:39 +00:00
void ordinary_list_move(struct ordinary_list *dst, struct ordinary_list *src, struct ordinary_node *node);
2022-11-17 16:05:44 +00:00
struct ordinary_node *ordinary_list_pop(struct ordinary_list *list);
2022-11-17 23:28:42 +00:00
void ordinary_list_drop(struct ordinary_list *list, struct ordinary_node *node);
2022-11-17 16:05:44 +00:00
2022-11-17 07:07:06 +00:00
#endif