Linked List
Linked List implementation in C
Linked_list.h
Go to the documentation of this file.
1 /******************************************************************************
2 * Title : Linked list header file
3 * Filename : Linked_list.h
4 * Author : Maximiliano Valencia
5 * Origin Date : 09/02/2019
6 * Version : 1.0.0
7 * Compiler : gcc
8 * Target : STM32
9 * Notes : None
10 ******************************************************************************/
18 #ifndef LINKED_LIST_H
19 #define LINKED_LIST_H
20 
21 /******************************************************************************
22 * Includes
23 ******************************************************************************/
24 #include <stdio.h>
25 #include <stdlib.h>
26 #include <string.h>
27 #include <pthread.h>
28 
29 /******************************************************************************
30 * Preprocessor Constants
31 ******************************************************************************/
32 
33 
34 /******************************************************************************
35 * Configuration Constants
36 ******************************************************************************/
37 
38 
39 /******************************************************************************
40 * Macros
41 ******************************************************************************/
42 
43 
44 /******************************************************************************
45 * Typedefs
46 ******************************************************************************/
50 typedef struct list_t list_t;
54 typedef struct node_t node_t;
55 
57 struct list_t
58 {
59  uint8_t numElements;
60  size_t dataSize;
63  pthread_mutex_t lock;
64 };
65 
67 struct node_t
68 {
69  void* data;
71 };
72 
73 /******************************************************************************
74 * Variables
75 ******************************************************************************/
76 
77 
78 /******************************************************************************
79 * Function Prototypes
80 ******************************************************************************/
81 void list_init(list_t* list, size_t dataSize);
82 void list_free(list_t* list);
83 void list_destroy(list_t* list);
84 void list_push(list_t* list, const void* data);
85 void list_push_front(list_t* list, const void* data);
86 uint8_t list_pop(list_t* list, void* data);
87 uint8_t list_pop_front(list_t* list, void* data);
88 uint8_t list_get_by_index(list_t* list, uint8_t index, void* data);
89 void list_print(list_t* list, void (*printFn)(const void* data));
90 void list_for_each(list_t* list, void (*eachFn)(const void* data, void* arg), void* arg);
91 uint8_t list_size(list_t* list);
92 
93 #endif /* LINKED_LIST_H */
uint8_t list_get_by_index(list_t *list, uint8_t index, void *data)
Definition: Linked_list.c:628
Linked list structure definition.
Definition: Linked_list.h:57
Node structure definition.
Definition: Linked_list.h:67
pthread_mutex_t lock
Definition: Linked_list.h:63
void list_destroy(list_t *list)
Definition: Linked_list.c:263
void list_for_each(list_t *list, void(*eachFn)(const void *data, void *arg), void *arg)
Definition: Linked_list.c:748
void list_init(list_t *list, size_t dataSize)
Definition: Linked_list.c:193
void list_free(list_t *list)
Definition: Linked_list.c:225
void list_print(list_t *list, void(*printFn)(const void *data))
Definition: Linked_list.c:689
node_t * tail
Definition: Linked_list.h:62
void * data
Definition: Linked_list.h:69
size_t dataSize
Definition: Linked_list.h:60
uint8_t list_pop_front(list_t *list, void *data)
Definition: Linked_list.c:554
uint8_t numElements
Definition: Linked_list.h:59
node_t * head
Definition: Linked_list.h:61
void list_push(list_t *list, const void *data)
Definition: Linked_list.c:327
void list_push_front(list_t *list, const void *data)
Definition: Linked_list.c:391
uint8_t list_pop(list_t *list, void *data)
Definition: Linked_list.c:475
node_t * next
Definition: Linked_list.h:70
uint8_t list_size(list_t *list)
Definition: Linked_list.c:801