NetSim Source Code Help
Loading...
Searching...
No Matches
List.h File Reference
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
Include dependency graph for List.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  element
 

Macros

#define _NETSIM_LIST_H_
 
#define LIST_NEXT(ls)   list_next(ls,ls->ele->offset)
 
#define LIST_ADD_LAST(ls, mem)   list_add_last(ls,mem->ele->offset,mem,__LINE__,__FILE__)
 
#define LIST_ADD_TOP(ls, mem)   list_add_top(ls,mem->ele->offset,mem)
 
#define LIST_FREE(ls, mem)   list_free(ls,mem->ele->offset,mem)
 
#define LIST_ADD(ls, mem, checker)   list_add(ls,mem,mem->ele->offset,checker)
 
#define LIST_REMOVE(ls, mem)   list_remove(ls,mem->ele->offset,mem)
 
#define LIST_SORT(ls, check)   list_sort(ls,(*ls)->ele->offset,check)
 
#define list_alloc(size, offset)   list_alloc_dbg(size,offset,__LINE__,__FILE__)
 
#define BEGIN_LIST(LIST_NAME)   typedef struct stru_##LIST_NAME
 
#define END_LIST(LIST_NAME)
 

Typedefs

typedef struct element _ele
 
typedef struct element_ptr_ele
 

Functions

__inline _elelist_ele (void *list, size_t offset)
 
void * list_alloc_dbg (size_t size, size_t offset, int line, char *file)
 
__inline void * list_next (void *list, size_t offset)
 
__inline void * list_prev (void *list, size_t offset)
 
void list_add (void **list, void *mem, size_t offset, int(*check)(void *current, void *mem))
 
void list_add_last (void **ls, size_t offset, void *mem, int line, char *file)
 
void list_add_top (void **list, size_t offset, void *mem)
 
void list_free (void **list, size_t offset, void *mem)
 
void list_sort (void **list, size_t offset, int(*check)(void *current, void *mem))
 
void list_remove (void **list, size_t offset, void *mem)
 

Macro Definition Documentation

◆ _NETSIM_LIST_H_

#define _NETSIM_LIST_H_

Definition at line 16 of file List.h.

◆ BEGIN_LIST

#define BEGIN_LIST (   LIST_NAME)    typedef struct stru_##LIST_NAME

Definition at line 38 of file List.h.

◆ END_LIST

#define END_LIST (   LIST_NAME)
Value:
LIST_NAME,*ptr_##LIST_NAME; \
static void* ##LIST_NAME##_ALLOC(){return list_alloc(sizeof(struct stru_##LIST_NAME),offsetof(struct stru_##LIST_NAME,ele));} \
static struct stru_##LIST_NAME##* ##LIST_NAME##_NEXT(ptr_##LIST_NAME ls){return (ptr_##LIST_NAME)LIST_NEXT(ls);}
#define LIST_NEXT(ls)
Definition: List.h:29
#define list_alloc(size, offset)
Definition: List.h:36

Definition at line 39 of file List.h.

◆ LIST_ADD

#define LIST_ADD (   ls,
  mem,
  checker 
)    list_add(ls,mem,mem->ele->offset,checker)

Definition at line 33 of file List.h.

◆ LIST_ADD_LAST

#define LIST_ADD_LAST (   ls,
  mem 
)    list_add_last(ls,mem->ele->offset,mem,__LINE__,__FILE__)

Definition at line 30 of file List.h.

◆ LIST_ADD_TOP

#define LIST_ADD_TOP (   ls,
  mem 
)    list_add_top(ls,mem->ele->offset,mem)

Definition at line 31 of file List.h.

◆ list_alloc

#define list_alloc (   size,
  offset 
)    list_alloc_dbg(size,offset,__LINE__,__FILE__)

Definition at line 36 of file List.h.

◆ LIST_FREE

#define LIST_FREE (   ls,
  mem 
)    list_free(ls,mem->ele->offset,mem)

Definition at line 32 of file List.h.

◆ LIST_NEXT

#define LIST_NEXT (   ls)    list_next(ls,ls->ele->offset)

Definition at line 29 of file List.h.

◆ LIST_REMOVE

#define LIST_REMOVE (   ls,
  mem 
)    list_remove(ls,mem->ele->offset,mem)

Definition at line 34 of file List.h.

◆ LIST_SORT

#define LIST_SORT (   ls,
  check 
)    list_sort(ls,(*ls)->ele->offset,check)

Definition at line 35 of file List.h.

Typedef Documentation

◆ _ele

typedef struct element _ele

◆ _ptr_ele

typedef struct element* _ptr_ele

Function Documentation

◆ list_add()

void list_add ( void **  list,
void *  mem,
size_t  offset,
int(*)(void *current, void *mem)  check 
)

◆ list_add_last()

void list_add_last ( void **  ls,
size_t  offset,
void *  mem,
int  line,
char *  file 
)

◆ list_add_top()

void list_add_top ( void **  list,
size_t  offset,
void *  mem 
)

◆ list_alloc_dbg()

void * list_alloc_dbg ( size_t  size,
size_t  offset,
int  line,
char *  file 
)

◆ list_ele()

__inline _ele * list_ele ( void *  list,
size_t  offset 
)

◆ list_free()

void list_free ( void **  list,
size_t  offset,
void *  mem 
)

◆ list_next()

__inline void * list_next ( void *  list,
size_t  offset 
)

◆ list_prev()

__inline void * list_prev ( void *  list,
size_t  offset 
)

◆ list_remove()

void list_remove ( void **  list,
size_t  offset,
void *  mem 
)

◆ list_sort()

void list_sort ( void **  list,
size_t  offset,
int(*)(void *current, void *mem)  check 
)