mirror of
https://github.com/hmaxnl/netex.git
synced 2025-01-18 07:24:21 +01:00
Compare commits
3 Commits
4c9c547e62
...
7e15e12d45
Author | SHA1 | Date | |
---|---|---|---|
|
7e15e12d45 | ||
|
9c8cdcd94d | ||
|
c3a2f00edc |
|
@ -4,7 +4,7 @@
|
|||
|
||||
#include "list.h"
|
||||
|
||||
list_node * insert_end(list_node* list, void* data)
|
||||
list_node * insert_node(list_node* list, void* data)
|
||||
{
|
||||
list_node* node = (list_node*)malloc(sizeof(list_node));
|
||||
if (node == NULL)
|
||||
|
@ -41,8 +41,10 @@ void delete_node(list_node* node)
|
|||
{
|
||||
if (node == NULL)
|
||||
return;
|
||||
node->previous->next = node->next;
|
||||
node->next->previous = node->previous;
|
||||
if (node->previous != NULL)
|
||||
node->previous->next = node->next;
|
||||
if (node->next != NULL)
|
||||
node->next->previous = node->previous;
|
||||
free(node);
|
||||
}
|
||||
|
||||
|
@ -53,11 +55,36 @@ void iterate_list(list_node* list, bool forward, int (*iterFunc)(const void*))
|
|||
list_node * current = list;
|
||||
while (current != NULL)
|
||||
{
|
||||
if (iterFunc(current->data) == 1)
|
||||
list_node* temp_next = current->next;
|
||||
list_node* temp_previous = current->previous;
|
||||
|
||||
// State
|
||||
int iter_state = iterFunc(current->data);
|
||||
if (iter_state & DELETE)
|
||||
delete_node(current);
|
||||
if (iter_state & BREAK)
|
||||
break;
|
||||
|
||||
if (forward)
|
||||
current = temp_next;
|
||||
else
|
||||
current = temp_previous;
|
||||
}
|
||||
}
|
||||
|
||||
list_node* find_node(list_node* list_start, bool forward, int (*findFunc)(const void*))
|
||||
{
|
||||
if (list_start == NULL || findFunc == NULL)
|
||||
return NULL;
|
||||
list_node* current = list_start;
|
||||
while (current != NULL)
|
||||
{
|
||||
if (findFunc(current->data) == 1)
|
||||
return current;
|
||||
if (forward)
|
||||
current = current->next;
|
||||
else
|
||||
current = current->previous;
|
||||
}
|
||||
return NULL;
|
||||
}
|
|
@ -2,6 +2,13 @@
|
|||
#define NETEX_LIST_H
|
||||
|
||||
|
||||
typedef enum list_iterate_states
|
||||
{
|
||||
CONTINUE = 0 << 0,
|
||||
BREAK = 1 << 0,
|
||||
DELETE = 1 << 1
|
||||
}iterate_state;
|
||||
|
||||
typedef struct list_node
|
||||
{
|
||||
void* data;
|
||||
|
@ -9,6 +16,7 @@ typedef struct list_node
|
|||
struct list_node* next;
|
||||
} list_node;
|
||||
|
||||
void delete_node(list_node* node);
|
||||
void iterate_list(list_node* list, bool forward, int (*iterFunc)(const void*));
|
||||
|
||||
#endif //NETEX_LIST_H
|
||||
|
|
|
@ -18,16 +18,15 @@ int shutdown_logger(const void* data)
|
|||
logger->app_logger = NULL;
|
||||
logger->name = NULL;
|
||||
free(logger);
|
||||
return 0;
|
||||
return DELETE | BREAK;
|
||||
}
|
||||
|
||||
void shutdown_log(app_logger_info* appLogger)
|
||||
{
|
||||
canLog = false;
|
||||
iterate_list(appLogger->loggers, true, &shutdown_logger);
|
||||
}
|
||||
|
||||
|
||||
|
||||
logger* create_logger(app_logger_info* appLogger, char* name)
|
||||
{
|
||||
return NULL;
|
||||
|
|
Loading…
Reference in New Issue
Block a user