mirror of
https://github.com/switchbrew/libnx.git
synced 2025-12-29 22:39:11 +01:00
36 lines
817 B
C
36 lines
817 B
C
/**
|
|
* @file list.h
|
|
* @brief Singly Linked List data structure.
|
|
* @author Yordrar
|
|
* @copyright libnx Authors
|
|
*/
|
|
#pragma once
|
|
#include "../../types.h"
|
|
#include "../../kernel/condvar.h"
|
|
#include "../../kernel/rwlock.h"
|
|
#include "../../kernel/thread.h"
|
|
|
|
typedef struct node {
|
|
void* item;
|
|
struct node* next;
|
|
} Node;
|
|
|
|
typedef struct list {
|
|
Node* header;
|
|
Node* last;
|
|
u32 num_nodes;
|
|
RwLock mutex;
|
|
bool isInited;
|
|
} List;
|
|
|
|
void listInit(List* l);
|
|
void listFree(List* l);
|
|
void listInsert(List* l, void* item, u32 pos);
|
|
static inline void listInsertFirst(List* l, void* item) {
|
|
listInsert(l, item, 0);
|
|
}
|
|
void listInsertLast(List* l, void* item);
|
|
void listDelete(List* l, void* item);
|
|
bool listIsInserted(List* l, void* item);
|
|
u32 listGetNumNodes(List* l);
|
|
void* listGetItem(List* l, u32 pos); |