HALFRED  0.4.0
hal_staticlist.h
Go to the documentation of this file.
1 
10 #ifndef HAL_STATICSLST_H
11 #define HAL_STATICSLST_H
12 
13 #include <stdint.h>
14 #include "hal.h"
15 
23 typedef struct {
25  uint16_t element_size;
27  uint8_t list_size;
29  uint8_t count;
30 #if defined HAL_ENABLE_OS && (HAL_ENABLE_OS == 1)
31  OSMutex lock;
33 #endif
35 
36 
46 SLSTList SLST_Create(size_t elem_count, size_t elem_size);
47 
55 void SLST_Destroy(SLSTList list);
56 
67 SLSTList SLST_Init(void *area, size_t area_size, size_t element_size);
68 
78 void* SLST_AddElement(SLSTList list);
79 
88 void* SLST_InsertElement(SLSTList list, const void* element);
89 
98 void* SLST_InsertElementAtPos(SLSTList list, int pos);
99 
106 void SLST_RemoveElement(SLSTList list, void *element);
107 
117 void* SLST_GetElementByField(SLSTList list, const void *field, size_t field_size, uint32_t field_offset);
118 
126 void* SLST_GetNextElement(SLSTList list, void *element);
127 
134 void* SLST_GetFirstElement(SLSTList list);
135 
141 #define SLST_GetCount(list) (((SLSTList)list)->count)
142 
147 #define SLST_Clear(list) do { ((SLSTList)list)->count = 0; } while (0)
148 
156 #define SLST_Lock(list, timeout) OSMUTEX_Take((((SLSTList)list)->lock), (timeout))
157 
162 #define SLST_Unlock(list) OSMUTEX_Give(((SLSTList)list)->lock)
163 
167 #define SLST_GetMemoryFootprint(list) (sizeof(SLSTListDesc) + (((SLSTList)list)->element_size*((SLSTList)list)->list_size))
168 
175 #endif /* HAL_STATICLIST */
void SLST_RemoveElement(SLSTList list, void *element)
Definition: hal_staticlist.c:169
HALFRED's main header file.
void SLST_Destroy(SLSTList list)
Definition: hal_staticlist.c:47
uint8_t list_size
maximum number of elements that can be stored by the list
Definition: hal_staticlist.h:27
void * SLST_AddElement(SLSTList list)
Definition: hal_staticlist.c:91
Definition: hal_staticlist.h:23
uint16_t element_size
size of single element stored by the list
Definition: hal_staticlist.h:25
void * SLST_GetNextElement(SLSTList list, void *element)
Definition: hal_staticlist.c:266
SLSTList SLST_Create(size_t elem_count, size_t elem_size)
Definition: hal_staticlist.c:16
void * SLST_InsertElement(SLSTList list, const void *element)
Definition: hal_staticlist.c:114
SLSTList SLST_Init(void *area, size_t area_size, size_t element_size)
Definition: hal_staticlist.c:62
void * SLST_InsertElementAtPos(SLSTList list, int pos)
Definition: hal_staticlist.c:132
void * SLST_GetElementByField(SLSTList list, const void *field, size_t field_size, uint32_t field_offset)
Definition: hal_staticlist.c:200
void * SLST_GetFirstElement(SLSTList list)
Definition: hal_staticlist.c:250
uint8_t count
number of elements actually stored by the list
Definition: hal_staticlist.h:29