| 
| void *  | apr_skiplist_alloc (apr_skiplist *sl, size_t size) | 
|   | 
| void  | apr_skiplist_free (apr_skiplist *sl, void *mem) | 
|   | 
| apr_status_t  | apr_skiplist_init (apr_skiplist **sl, apr_pool_t *p) | 
|   | 
| void  | apr_skiplist_set_compare (apr_skiplist *sl, apr_skiplist_compare XXX1, apr_skiplist_compare XXX2) | 
|   | 
| void  | apr_skiplist_add_index (apr_skiplist *sl, apr_skiplist_compare XXX1, apr_skiplist_compare XXX2) | 
|   | 
| apr_skiplistnode *  | apr_skiplist_getlist (apr_skiplist *sl) | 
|   | 
| void *  | apr_skiplist_find_compare (apr_skiplist *sl, void *data, apr_skiplistnode **iter, apr_skiplist_compare func) | 
|   | 
| void *  | apr_skiplist_find (apr_skiplist *sl, void *data, apr_skiplistnode **iter) | 
|   | 
| void *  | apr_skiplist_last_compare (apr_skiplist *sl, void *data, apr_skiplistnode **iter, apr_skiplist_compare comp) | 
|   | 
| void *  | apr_skiplist_last (apr_skiplist *sl, void *data, apr_skiplistnode **iter) | 
|   | 
| void *  | apr_skiplist_next (apr_skiplist *sl, apr_skiplistnode **iter) | 
|   | 
| void *  | apr_skiplist_previous (apr_skiplist *sl, apr_skiplistnode **iter) | 
|   | 
| void *  | apr_skiplist_element (apr_skiplistnode *iter) | 
|   | 
| apr_skiplistnode *  | apr_skiplist_insert_compare (apr_skiplist *sl, void *data, apr_skiplist_compare comp) | 
|   | 
| apr_skiplistnode *  | apr_skiplist_insert (apr_skiplist *sl, void *data) | 
|   | 
| apr_skiplistnode *  | apr_skiplist_add_compare (apr_skiplist *sl, void *data, apr_skiplist_compare comp) | 
|   | 
| apr_skiplistnode *  | apr_skiplist_add (apr_skiplist *sl, void *data) | 
|   | 
| apr_skiplistnode *  | apr_skiplist_replace_compare (apr_skiplist *sl, void *data, apr_skiplist_freefunc myfree, apr_skiplist_compare comp) | 
|   | 
| apr_skiplistnode *  | apr_skiplist_replace (apr_skiplist *sl, void *data, apr_skiplist_freefunc myfree) | 
|   | 
| int  | apr_skiplist_remove_node (apr_skiplist *sl, apr_skiplistnode *iter, apr_skiplist_freefunc myfree) | 
|   | 
| int  | apr_skiplist_remove_compare (apr_skiplist *sl, void *data, apr_skiplist_freefunc myfree, apr_skiplist_compare comp) | 
|   | 
| int  | apr_skiplist_remove (apr_skiplist *sl, void *data, apr_skiplist_freefunc myfree) | 
|   | 
| void  | apr_skiplist_remove_all (apr_skiplist *sl, apr_skiplist_freefunc myfree) | 
|   | 
| void  | apr_skiplist_destroy (apr_skiplist *sl, apr_skiplist_freefunc myfree) | 
|   | 
| void *  | apr_skiplist_pop (apr_skiplist *sl, apr_skiplist_freefunc myfree) | 
|   | 
| void *  | apr_skiplist_peek (apr_skiplist *sl) | 
|   | 
| size_t  | apr_skiplist_size (const apr_skiplist *sl) | 
|   | 
| int  | apr_skiplist_height (const apr_skiplist *sl) | 
|   | 
| int  | apr_skiplist_preheight (const apr_skiplist *sl) | 
|   | 
| void  | apr_skiplist_set_preheight (apr_skiplist *sl, int to) | 
|   | 
| apr_skiplist *  | apr_skiplist_merge (apr_skiplist *sl1, apr_skiplist *sl2) | 
|   | 
Refer to http://en.wikipedia.org/wiki/Skip_list for information about the purpose of and ideas behind skip lists. 
◆ apr_skiplist
Opaque structure used to represent the skip list 
 
 
◆ apr_skiplist_compare
      
        
          | typedef int(* apr_skiplist_compare) (void *, void *) | 
        
      
 
apr_skiplist_compare is the function type that must be implemented per object type that is used in a skip list for comparisons to maintain order 
 
 
◆ apr_skiplist_freefunc
      
        
          | typedef void(* apr_skiplist_freefunc) (void *) | 
        
      
 
apr_skiplist_freefunc is the function type that must be implemented to handle elements as they are removed from a skip list. 
 
 
◆ apr_skiplistnode
◆ apr_skiplist_add()
Add an element into the skip list using the existing comparison function allowing for duplicates. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | data | The element to insert  | 
  
   
 
 
◆ apr_skiplist_add_compare()
Add an element into the skip list using the specified comparison function allowing for duplicates. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | data | The element to add  | 
    | comp | The comparison function to use for placement into the skip list  | 
  
   
 
 
◆ apr_skiplist_add_index()
Set the indexing functions to the specified comparison functions and rebuild the index. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | XXX1 | FIXME  | 
    | XXX2 | FIXME | 
  
   
 
 
◆ apr_skiplist_alloc()
      
        
          | void * apr_skiplist_alloc  | 
          ( | 
          apr_skiplist *  | 
          sl,  | 
        
        
           | 
           | 
          size_t  | 
          size  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Allocate memory using the same mechanism as the skip list. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | size | The amount to allocate  | 
  
   
 
 
◆ apr_skiplist_destroy()
Remove each element from the skip list. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | myfree | A function to be called for each removed element  | 
  
   
 
 
◆ apr_skiplist_element()
Return the element of the skip list node 
- Parameters
 - 
  
  
 
 
 
◆ apr_skiplist_find()
Return the next matching element in the skip list using the current comparison function. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | data | The value to search for  | 
    | iter | A pointer to the returned skip list node representing the element found  | 
  
   
 
 
◆ apr_skiplist_find_compare()
Return the next matching element in the skip list using the specified comparison function. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | data | The value to search for  | 
    | iter | A pointer to the returned skip list node representing the element found  | 
    | func | The comparison function to use  | 
  
   
 
 
◆ apr_skiplist_free()
Free memory using the same mechanism as the skip list. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | mem | The object to free  | 
  
   
 
 
◆ apr_skiplist_getlist()
Return the list maintained by the skip list abstraction. 
- Parameters
 - 
  
  
 
 
 
◆ apr_skiplist_height()
Return the height of the list (number of skip paths), in O(1). 
- Parameters
 - 
  
  
 
 
 
◆ apr_skiplist_init()
Allocate a new skip list 
- Parameters
 - 
  
    | sl | The pointer in which to return the newly created skip list  | 
    | p | The pool from which to allocate the skip list (optional).  | 
  
   
 
 
◆ apr_skiplist_insert()
Insert an element into the skip list using the existing comparison function if it does not already exist. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | data | The element to insert  | 
  
   
 
 
◆ apr_skiplist_insert_compare()
Insert an element into the skip list using the specified comparison function if it does not already exist. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | data | The element to insert  | 
    | comp | The comparison function to use for placement into the skip list  | 
  
   
 
 
◆ apr_skiplist_last()
Return the last matching element in the skip list using the current comparison function. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | data | The value to search for  | 
    | iter | A pointer to the returned skip list node representing the element found  | 
  
   
 
 
◆ apr_skiplist_last_compare()
Return the last matching element in the skip list using the specified comparison function. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | data | The value to search for  | 
    | iter | A pointer to the returned skip list node representing the element found  | 
    | comp | The comparison function to use  | 
  
   
 
 
◆ apr_skiplist_merge()
Merge two skip lists. XXX SEMANTICS 
- Parameters
 - 
  
    | sl1 | One of two skip lists to be merged  | 
    | sl2 | The other of two skip lists to be merged  | 
  
   
 
 
◆ apr_skiplist_next()
Return the next element in the skip list. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | iter | On entry, a pointer to the skip list node to start with; on return, a pointer to the skip list node representing the element returned  | 
  
   
 
 
◆ apr_skiplist_peek()
Return the first element in the skip list, leaving the element in the skip list. 
- Parameters
 - 
  
  
 
 
 
◆ apr_skiplist_pop()
Return the first element in the skip list, removing the element from the skip list. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | myfree | A function to be called for the removed element  | 
  
   
 
 
◆ apr_skiplist_preheight()
Return the predefined maximum height of the skip list. 
- Parameters
 - 
  
  
 
 
 
◆ apr_skiplist_previous()
Return the previous element in the skip list. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | iter | On entry, a pointer to the skip list node to start with; on return, a pointer to the skip list node representing the element returned  | 
  
   
 
 
◆ apr_skiplist_remove()
Remove an element from the skip list using the existing comparison function for locating the element. In the case of duplicates, the 1st entry will be removed. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | data | The element to remove  | 
    | myfree | A function to be called for each removed element  | 
  
   
 
 
◆ apr_skiplist_remove_all()
Remove all elements from the skip list. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | myfree | A function to be called for each removed element  | 
  
   
 
 
◆ apr_skiplist_remove_compare()
Remove an element from the skip list using the specified comparison function for locating the element. In the case of duplicates, the 1st entry will be removed. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | data | The element to remove  | 
    | myfree | A function to be called for each removed element  | 
    | comp | The comparison function to use for placement into the skip list  | 
  
   
 
 
◆ apr_skiplist_remove_node()
Remove a node from the skip list. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | iter | The skip list node to remove  | 
    | myfree | A function to be called for the removed element  | 
  
   
 
 
◆ apr_skiplist_replace()
Add an element into the skip list using the existing comparison function removing the existing duplicates. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | data | The element to insert  | 
    | myfree | A function to be called for each removed duplicate  | 
  
   
 
 
◆ apr_skiplist_replace_compare()
Add an element into the skip list using the specified comparison function removing the existing duplicates. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | data | The element to insert  | 
    | comp | The comparison function to use for placement into the skip list  | 
    | myfree | A function to be called for each removed duplicate  | 
  
   
 
 
◆ apr_skiplist_set_compare()
Set the comparison functions to be used for searching the skip list. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | XXX1 | FIXME  | 
    | XXX2 | FIXME | 
  
   
 
 
◆ apr_skiplist_set_preheight()
      
        
          | void apr_skiplist_set_preheight  | 
          ( | 
          apr_skiplist *  | 
          sl,  | 
        
        
           | 
           | 
          int  | 
          to  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Set a predefined maximum height for the skip list. 
- Parameters
 - 
  
    | sl | The skip list  | 
    | to | The preheight to set, or a nul/negative value to disable.  | 
  
   
- Note
 - Should be called before any insertion/add. 
 
 
 
◆ apr_skiplist_size()
Return the size of the list (number of elements), in O(1). 
- Parameters
 -