/* ---------------------------------------------------------------------------- * linked list : exports * ---------------------------------------------------------------------------- * Copyright (c) 2012 Ben Blazak * Released under The MIT License (MIT) (see "license.md") * Project located at * ------------------------------------------------------------------------- */ #ifndef LINKED_LIST_h #define LINKED_LIST_h #include "lib/data-types.h" // default data type for the list #ifndef LINKED_LIST_DATA_TYPE #define LINKED_LIST_DATA_TYPE uint8_t #endif // structs struct linked_list_node { LINKED_LIST_DATA_TYPE data; struct linked_list_node * next; }; struct linked_list { uint8_t length; struct linked_list_node * head; struct linked_list_node * tail; }; // typedefs typedef struct linked_list linked_list_t; typedef struct linked_list_node linked_list_node_t; // functions #define _list_t linked_list_t #define _data_t LINKED_LIST_DATA_TYPE // TODO _list_t * linked_list_new (void); _list_t * linked_list_add_head (_list_t * list, _data_t data); _list_t * linked_list_add_tail (_list_t * list, _data_t data); _data_t linked_list_pop_head (_list_t * list); _data_t linked_list_pop_tail (_list_t * list); _data_t linked_list_read (_list_t * list, uint8_t position); _list_t * linked_list_copy (_list_t * list); void linked_list_free (_list_t * list); // /TODO #undef _list_t #undef _data_t #endif