summaryrefslogtreecommitdiffstats
path: root/list.h
diff options
context:
space:
mode:
authorFreeArtMan <dos21h@gmail.com>2014-11-16 11:10:23 +0900
committerFreeArtMan <dos21h@gmail.com>2014-11-16 11:10:23 +0900
commite8574a9621a2cbe50b22aa5aa8114bcebce22b38 (patch)
tree6e77d3872827926ce108f15e312d699fefbbd23a /list.h
parentc84cc88f0b34d8802390e2a7b6dab7f07ba277d1 (diff)
downloadmicrobbs-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.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/list.h b/list.h
new file mode 100644
index 0000000..c443430
--- /dev/null
+++ b/list.h
@@ -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