forked from acouzens/open5gs
55 lines
1.5 KiB
Plaintext
55 lines
1.5 KiB
Plaintext
#ifndef OGS_SBI_LIST_H
|
|
#define OGS_SBI_LIST_H
|
|
|
|
#include "../external/cJSON.h"
|
|
#include "ogs-core.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define OpenAPI_malloc(__sIZE) __sIZE == 0 ? NULL : ogs_malloc(__sIZE)
|
|
|
|
typedef struct OpenAPI_list_s OpenAPI_list_t;
|
|
|
|
typedef struct OpenAPI_lnode_s OpenAPI_lnode_t;
|
|
|
|
struct OpenAPI_lnode_s {
|
|
OpenAPI_lnode_t *next;
|
|
OpenAPI_lnode_t *prev;
|
|
void *data;
|
|
};
|
|
|
|
typedef struct OpenAPI_list_s {
|
|
OpenAPI_lnode_t *first;
|
|
OpenAPI_lnode_t *last;
|
|
|
|
long count;
|
|
} OpenAPI_list_t;
|
|
|
|
#define OpenAPI_list_for_each(list, element) for(element = (list != NULL) ? (list)->first : NULL; element != NULL; element = element->next)
|
|
|
|
OpenAPI_list_t *OpenAPI_list_create(void);
|
|
void OpenAPI_list_free(OpenAPI_list_t *listToFree);
|
|
|
|
void OpenAPI_list_add(OpenAPI_list_t *list, void *dataToAddInList);
|
|
OpenAPI_lnode_t *OpenAPI_list_find(OpenAPI_list_t *list, long indexOfElement);
|
|
void OpenAPI_list_remove(
|
|
OpenAPI_list_t *list, OpenAPI_lnode_t *elementToRemove);
|
|
|
|
void OpenAPI_list_iterate_forward(OpenAPI_list_t *list,
|
|
void (*operationToPerform)(OpenAPI_lnode_t*, void*),
|
|
void *additionalDataNeededForCallbackFunction);
|
|
void OpenAPI_list_iterate_backward(OpenAPI_list_t *list,
|
|
void (*operationToPerform)(OpenAPI_lnode_t*, void*),
|
|
void *additionalDataNeededForCallbackFunction);
|
|
|
|
void OpenAPI_lnode_print(OpenAPI_lnode_t *listEntry, void *additionalData);
|
|
void OpenAPI_lnode_free(OpenAPI_lnode_t *listEntry, void *additionalData);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // OGS_SBI_LIST_H
|