43#include <umock/stdlib.hpp>
51 int maxFreeListLength) {
52 assert(free_list != NULL);
54 if (free_list == NULL)
56 free_list->element_size = elementSize;
57 free_list->maxFreeListLength = maxFreeListLength;
58 free_list->head = NULL;
59 free_list->freeListLength = 0;
67 assert(free_list != NULL);
69 if (free_list == NULL)
72 if (free_list->head) {
73 ret = free_list->head;
74 free_list->head = free_list->head->next;
75 free_list->freeListLength--;
77 ret = (
FreeListNode*)umock::stdlib_h.malloc(free_list->element_size);
86 assert(free_list != NULL);
88 if (free_list == NULL)
90 if (element != NULL &&
91 free_list->freeListLength + 1 < free_list->maxFreeListLength) {
92 free_list->freeListLength++;
94 temp->next = free_list->head;
95 free_list->head = temp;
97 umock::stdlib_h.free(element);
106 assert(free_list != NULL);
110 while (free_list->head) {
111 temp = free_list->head->next;
112 umock::stdlib_h.free(free_list->head);
113 free_list->head = temp;
115 free_list->freeListLength = 0;
int FreeListInit(FreeList *free_list, size_t elementSize, int maxFreeListLength)
Initializes Free List.
int FreeListFree(FreeList *free_list, void *element)
Returns an item to the Free List.
void * FreeListAlloc(FreeList *free_list)
Allocates chunk of set size.
int FreeListDestroy(FreeList *free_list)
Releases the resources stored with the free list.
Manage a free list (for internal use only).
Free list node. points to next free item.
Stores head and size of free list, as well as mutex for protection.