Apache Portable Runtime
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
apr_skiplist.h
1 /* Licensed to the Apache Software Foundation (ASF) under one or more
2  * contributor license agreements. See the NOTICE file distributed with
3  * this work for additional information regarding copyright ownership.
4  * The ASF licenses this file to You under the Apache License, Version 2.0
5  * (the "License"); you may not use this file except in compliance with
6  * the License. You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef _APR_SKIPLIST_P_H
18 #define _APR_SKIPLIST_P_H
19 
20 #include "apr.h"
21 #include "apr_portable.h"
22 #include <stdlib.h>
23 
24 
25 /* This is the function type that must be implemented per object type
26  that is used in a skiplist for comparisons to maintain order */
27 typedef int (*apr_skiplist_compare) (void *, void *);
28 typedef void (*apr_skiplist_freefunc) (void *);
29 
30 struct apr_skiplist;
31 struct apr_skiplistnode;
32 
33 typedef struct apr_skiplistnode apr_skiplistnode;
34 typedef struct apr_skiplist apr_skiplist;
35 
36 APR_DECLARE(void *) apr_skiplist_alloc(apr_skiplist *sl, size_t size);
37 
38 APR_DECLARE(void) apr_skiplist_free(apr_skiplist *sl, void *mem);
39 
40 APR_DECLARE(apr_status_t) apr_skiplist_init(apr_skiplist **sl, apr_pool_t *p);
41 
42 APR_DECLARE(void) apr_skiplist_set_compare(apr_skiplist *sl, apr_skiplist_compare,
43  apr_skiplist_compare);
44 
45 APR_DECLARE(void) apr_skiplist_add_index(apr_skiplist *sl, apr_skiplist_compare,
46  apr_skiplist_compare);
47 
48 APR_DECLARE(apr_skiplistnode *) apr_skiplist_getlist(apr_skiplist *sl);
49 
50 APR_DECLARE(void *) apr_skiplist_find_compare(apr_skiplist *sl,
51  void *data,
52  apr_skiplistnode **iter,
53  apr_skiplist_compare func);
54 
55 APR_DECLARE(void *) apr_skiplist_find(apr_skiplist *sl, void *data, apr_skiplistnode **iter);
56 
57 APR_DECLARE(void *) apr_skiplist_next(apr_skiplist *sl, apr_skiplistnode **iter);
58 
59 APR_DECLARE(void *) apr_skiplist_previous(apr_skiplist *sl, apr_skiplistnode **iter);
60 
61 
62 APR_DECLARE(apr_skiplistnode *) apr_skiplist_insert_compare(apr_skiplist *sl,
63  void *data, apr_skiplist_compare comp);
64 
65 APR_DECLARE(apr_skiplistnode *) apr_skiplist_insert(apr_skiplist* sl, void *data);
66 
67 APR_DECLARE(int) apr_skiplist_remove_compare(apr_skiplist *sl, void *data,
68  apr_skiplist_freefunc myfree, apr_skiplist_compare comp);
69 
70 APR_DECLARE(int) apr_skiplist_remove(apr_skiplist *sl, void *data, apr_skiplist_freefunc myfree);
71 
72 APR_DECLARE(void) apr_skiplist_remove_all(apr_skiplist *sl, apr_skiplist_freefunc myfree);
73 
74 APR_DECLARE(void) apr_skiplist_destroy(apr_skiplist *sl, apr_skiplist_freefunc myfree);
75 
76 APR_DECLARE(void *) apr_skiplist_pop(apr_skiplist *a, apr_skiplist_freefunc myfree);
77 
78 APR_DECLARE(void *) apr_skiplist_peek(apr_skiplist *a);
79 
80 APR_DECLARE(apr_skiplist *) apr_skiplist_merge(apr_skiplist *sl1, apr_skiplist *sl2);
81 
82 #endif
#define APR_DECLARE(type)
Definition: apr.h:479
APR Platform Definitions.
struct apr_pool_t apr_pool_t
Definition: apr_pools.h:60
int apr_status_t
Definition: apr_errno.h:44
APR Portability Routines.