mcl_list.h
Go to the documentation of this file.
1 /*!**********************************************************************
2 *
3 * @copyright Copyright (C) 2017 Siemens Aktiengesellschaft.\n
4 * All rights reserved.
5 *
6 *************************************************************************
7 *
8 * @file mcl_list.h
9 * @date Oct 30, 2017
10 * @brief List module interface file.
11 *
12 * The list interface provides mcl_list_t data structure for linked lists
13 * and functions for list operations.
14 *
15 ************************************************************************/
16 
17 #ifndef MCL_LIST_H_
18 #define MCL_LIST_H_
19 
20 #include "mcl/mcl_common.h"
21 
22 #ifdef __cplusplus
23 extern "C"
24 {
25 #endif
26 
30  typedef struct mcl_list_node_t
31  {
32  void *data;
36 
40  typedef struct mcl_list_t
41  {
46  } mcl_list_t;
47 
59  typedef E_MCL_ERROR_CODE (*mcl_list_compare_callback)(void *reference_item, const void *item_to_compare);
60 
66  typedef void (*mcl_list_item_destroy_callback)(void **item);
67 
80 
98 
115 
132 
149 
164  extern MCL_EXPORT E_MCL_ERROR_CODE mcl_list_exist(mcl_list_t *list, const void *item_to_find, mcl_list_compare_callback compare_function, void **item);
165 
173  extern MCL_EXPORT void mcl_list_reset(mcl_list_t *list);
174 
185  extern MCL_EXPORT void mcl_list_destroy(mcl_list_t **list);
186 
197 
198 #ifdef __cplusplus
199 }
200 #endif
201 
202 #endif //MCL_LIST_H_
MCL_EXPORT E_MCL_ERROR_CODE mcl_list_remove_with_content(mcl_list_t *list, mcl_list_node_t *node, mcl_list_item_destroy_callback callback)
Removes a node from the list and destroys the removed item with the provided callback function...
Definition: list.c:81
MCL_EXPORT E_MCL_ERROR_CODE mcl_list_initialize(mcl_list_t **list)
Initializes a list with zero items in it.
Definition: list.c:19
#define MCL_EXPORT
Common module interface header file.
MCL_EXPORT void mcl_list_destroy(mcl_list_t **list)
Destroys the list.
Definition: list.c:121
MCL_EXPORT void mcl_list_reset(mcl_list_t *list)
Reset the current node to head node.
Definition: list.c:112
MCL_EXPORT E_MCL_ERROR_CODE mcl_list_remove(mcl_list_t *list, mcl_list_node_t *node)
Removes a node from the list.
Definition: list.c:67
void(* mcl_list_item_destroy_callback)(void **item)
Definition: mcl_list.h:66
E_MCL_ERROR_CODE
MCL Error code definitions. Every function returning an error code uses this enum values...
Definition: mcl_common.h:137
struct mcl_list_node_t * next
Next node in the list.
Definition: mcl_list.h:34
mcl_list_node_t * head
Head node of the list.
Definition: mcl_list.h:42
MCL_EXPORT E_MCL_ERROR_CODE mcl_list_exist(mcl_list_t *list, const void *item_to_find, mcl_list_compare_callback compare_function, void **item)
Searches item_to_find in the list.
Definition: list.c:96
MCL_EXPORT E_MCL_ERROR_CODE mcl_list_add(mcl_list_t *list, void *data)
Adds a new item to list.
Definition: list.c:32
struct mcl_list_node_t * prev
Previous node in the list.
Definition: mcl_list.h:33
mcl_list_node_t * last
Last node of the list.
Definition: mcl_list.h:43
size_t mcl_size_t
Definition: mcl_common.h:38
MCL_EXPORT E_MCL_ERROR_CODE mcl_list_next(mcl_list_t *list, mcl_list_node_t **node)
Gets the next node from the list.
Definition: list.c:46
mcl_list_node_t * current
Current node of the list.
Definition: mcl_list.h:44
MCL_EXPORT void mcl_list_destroy_with_content(mcl_list_t **list, mcl_list_item_destroy_callback callback)
Destroys the list and its items with a given callback function.
Definition: list.c:130
E_MCL_ERROR_CODE(* mcl_list_compare_callback)(void *reference_item, const void *item_to_compare)
Definition: mcl_list.h:59
mcl_size_t count
Node count of the list.
Definition: mcl_list.h:45
void * data
Data of the node.
Definition: mcl_list.h:32