typedef int (*ap_skiplist_compare) (void *, void *);
typedef void (*ap_skiplist_freefunc) (void *);
+struct ap_skiplist;
+struct ap_skiplistnode;
+
typedef struct ap_skiplistnode ap_skiplistnode;
typedef struct ap_skiplist ap_skiplist;
-struct ap_skiplist {
- ap_skiplist_compare compare;
- ap_skiplist_compare comparek;
- int height;
- int preheight;
- int size;
- ap_skiplistnode *top;
- ap_skiplistnode *bottom;
- /* These two are needed for appending */
- ap_skiplistnode *topend;
- ap_skiplistnode *bottomend;
- ap_skiplist *index;
- apr_pool_t *pool;
-};
-
-struct ap_skiplistnode {
- void *data;
- ap_skiplistnode *next;
- ap_skiplistnode *prev;
- ap_skiplistnode *down;
- ap_skiplistnode *up;
- ap_skiplistnode *previndex;
- ap_skiplistnode *nextindex;
- ap_skiplist *sl;
-};
-
AP_DECLARE(void *) ap_skiplist_alloc(ap_skiplist *sl, size_t size);
AP_DECLARE(void) ap_skiplist_free(ap_skiplist *sl, void *mem);
#include "ap_skiplist.h"
+struct ap_skiplist {
+ ap_skiplist_compare compare;
+ ap_skiplist_compare comparek;
+ int height;
+ int preheight;
+ int size;
+ ap_skiplistnode *top;
+ ap_skiplistnode *bottom;
+ /* These two are needed for appending */
+ ap_skiplistnode *topend;
+ ap_skiplistnode *bottomend;
+ ap_skiplist *index;
+ apr_pool_t *pool;
+};
+
+struct ap_skiplistnode {
+ void *data;
+ ap_skiplistnode *next;
+ ap_skiplistnode *prev;
+ ap_skiplistnode *down;
+ ap_skiplistnode *up;
+ ap_skiplistnode *previndex;
+ ap_skiplistnode *nextindex;
+ ap_skiplist *sl;
+};
+
+
#ifndef MIN
#define MIN(a,b) ((a<b)?(a):(b))
#endif