diff options
author | FreeArtMan <dos21h@gmail.com> | 2014-11-16 11:10:23 +0900 |
---|---|---|
committer | FreeArtMan <dos21h@gmail.com> | 2014-11-16 11:10:23 +0900 |
commit | e8574a9621a2cbe50b22aa5aa8114bcebce22b38 (patch) | |
tree | 6e77d3872827926ce108f15e312d699fefbbd23a /list.h | |
parent | c84cc88f0b34d8802390e2a7b6dab7f07ba277d1 (diff) | |
download | microbbs-e8574a9621a2cbe50b22aa5aa8114bcebce22b38.tar.gz microbbs-e8574a9621a2cbe50b22aa5aa8114bcebce22b38.zip |
Preparation to article list feature. Added debug.h and mmm.h
Diffstat (limited to 'list.h')
-rw-r--r-- | list.h | 69 |
1 files changed, 69 insertions, 0 deletions
@@ -0,0 +1,69 @@ +#ifndef __LIBADT_SLIST_H +#define __LIBADT_SLIST_H + +#include <stdlib.h> +#include <stdio.h> +#include <stdint.h> + +#include "debug.h" +#include "mmm.h" + +//use stack memallocation features. need to make some changes in api + + +typedef struct ListNode +{ + struct ListNode *next; + void *val; +} ListNode; + +typedef struct List +{ + int count; + ListNode *first; + ListNode *last; +} List; + +struct List* llist_new(); +struct ListNode* llist_newn( void* ); +//#define __LLIST_NEW() +//#define __LLIST_NEWN() + +int llist_length( struct List* ); +int llist_index( struct List*, void* ); +//llist_find( struct List ); +//find by pointer +//find by value +void llist_reverse( struct List** ); + +void llist_append( struct List*, void* ); +void llist_appendn( struct List**, void*, struct ListNode* ); +//#define __LIST_APPEND() + +void* llist_pop( struct List* ); +void llist_push( struct List*, void* ); + +void llist_free( struct List* ); +void llist_freen( struct ListNode* ); + +//void llist_merge( struct List**, struct List* ); +//void llist_compare( struct List +//void llist_split( struct List*, +//void llist_splitn( struct List*, struct ListNode* +//void llist_splitp( struct List*, void* +//void llist_splitc( struct List*, void (*)(void*) +//void llist_sort( +//sort by pointer +//sort by value + +#define llist_first(A) ((A)->first) +#define llist_last(A) ((A)->last) + +//#define LLIST_FOREACH() +//#define LLIST_FOREACH_PREV() + +//#define llist_islastn(A) () +//#define llist_isfirstn(A) () +//#define llist_getfirstn(A) ((A)) +//#define llist_getlastn(A) () +#endif |