#ifndef __ORDINARY_H_ #define __ORDINARY_H_ #include 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); void ordinary_list_delete(struct ordinary_list *list); uint8_t ordinary_list_empty(struct ordinary_list *list); uint8_t ordinary_list_full(struct ordinary_list *list); struct ordinary_node *ordinary_list_at(struct ordinary_list *list, uint32_t idx); struct ordinary_node *ordinary_list_find(struct ordinary_list *list, callback cb); uint8_t ordinary_list_for(struct ordinary_list *list, callback cb); struct ordinary_node *ordinary_list_add(struct ordinary_list *list, void *val); void ordinary_list_move(struct standard_list *dst, struct standard_list *src, struct standard_node *node); struct ordinary_node *ordinary_list_pop(struct ordinary_list *list); void ordinary_list_drop(struct ordinary_list *list, struct ordinary_node *node); #endif