libdict
Data Structure C Library
Loading...
Searching...
No Matches
skiplist.c File Reference
#include "skiplist.h"
#include <string.h>
#include "dict_private.h"
Include dependency graph for skiplist.c:

Go to the source code of this file.

Data Structures

struct  skip_node
 
struct  skiplist
 
struct  skiplist_itor
 

Macros

#define MAX_LINK   32
 

Typedefs

typedef struct skip_node skip_node
 

Functions

skiplistskiplist_new (dict_compare_func cmp_func, unsigned max_link)
 
dictskiplist_dict_new (dict_compare_func cmp_func, unsigned max_link)
 
size_t skiplist_free (skiplist *list, dict_delete_func delete_func)
 
dict_insert_result skiplist_insert (skiplist *list, void *key)
 
void ** skiplist_search (skiplist *list, const void *key)
 
void ** skiplist_search_le (skiplist *list, const void *key)
 
void ** skiplist_search_lt (skiplist *list, const void *key)
 
void ** skiplist_search_ge (skiplist *list, const void *key)
 
void ** skiplist_search_gt (skiplist *list, const void *key)
 
dict_remove_result skiplist_remove (skiplist *list, const void *key)
 
size_t skiplist_clear (skiplist *list, dict_delete_func delete_func)
 
size_t skiplist_traverse (skiplist *list, dict_visit_func visit, void *user_data)
 
size_t skiplist_count (const skiplist *list)
 
bool skiplist_verify (const skiplist *list)
 
size_t skiplist_link_count_histogram (const skiplist *list, size_t counts[], size_t ncounts)
 
skiplist_itorskiplist_itor_new (skiplist *list)
 
dict_itorskiplist_dict_itor_new (skiplist *list)
 
void skiplist_itor_free (skiplist_itor *itor)
 
bool skiplist_itor_valid (const skiplist_itor *itor)
 
void skiplist_itor_invalidate (skiplist_itor *itor)
 
bool skiplist_itor_next (skiplist_itor *itor)
 
bool skiplist_itor_prev (skiplist_itor *itor)
 
bool skiplist_itor_nextn (skiplist_itor *itor, size_t count)
 
bool skiplist_itor_prevn (skiplist_itor *itor, size_t count)
 
bool skiplist_itor_first (skiplist_itor *itor)
 
bool skiplist_itor_last (skiplist_itor *itor)
 
bool skiplist_itor_search (skiplist_itor *itor, const void *key)
 
bool skiplist_itor_search_le (skiplist_itor *itor, const void *key)
 
bool skiplist_itor_search_lt (skiplist_itor *itor, const void *key)
 
bool skiplist_itor_search_ge (skiplist_itor *itor, const void *key)
 
bool skiplist_itor_search_gt (skiplist_itor *itor, const void *key)
 
const void * skiplist_itor_key (const skiplist_itor *itor)
 
void ** skiplist_itor_datum (skiplist_itor *itor)
 
int skiplist_itor_compare (const skiplist_itor *itor1, const skiplist_itor *itor2)
 
bool skiplist_itor_remove (skiplist_itor *itor)
 

Macro Definition Documentation

◆ MAX_LINK

#define MAX_LINK   32

Definition at line 47 of file skiplist.c.

Typedef Documentation

◆ skip_node

typedef struct skip_node skip_node

Definition at line 37 of file skiplist.c.

Function Documentation

◆ skiplist_clear()

size_t skiplist_clear ( skiplist * list,
dict_delete_func delete_func )

Definition at line 408 of file skiplist.c.

◆ skiplist_count()

size_t skiplist_count ( const skiplist * list)

Definition at line 439 of file skiplist.c.

◆ skiplist_dict_itor_new()

dict_itor * skiplist_dict_itor_new ( skiplist * list)

Definition at line 511 of file skiplist.c.

Here is the call graph for this function:

◆ skiplist_dict_new()

dict * skiplist_dict_new ( dict_compare_func cmp_func,
unsigned max_link )

Definition at line 135 of file skiplist.c.

Here is the call graph for this function:

◆ skiplist_free()

size_t skiplist_free ( skiplist * list,
dict_delete_func delete_func )

Definition at line 149 of file skiplist.c.

Here is the call graph for this function:

◆ skiplist_insert()

dict_insert_result skiplist_insert ( skiplist * list,
void * key )

Definition at line 183 of file skiplist.c.

◆ skiplist_itor_compare()

int skiplist_itor_compare ( const skiplist_itor * itor1,
const skiplist_itor * itor2 )

Definition at line 642 of file skiplist.c.

◆ skiplist_itor_datum()

void ** skiplist_itor_datum ( skiplist_itor * itor)

Definition at line 636 of file skiplist.c.

◆ skiplist_itor_first()

bool skiplist_itor_first ( skiplist_itor * itor)

Definition at line 577 of file skiplist.c.

◆ skiplist_itor_free()

void skiplist_itor_free ( skiplist_itor * itor)

Definition at line 525 of file skiplist.c.

◆ skiplist_itor_invalidate()

void skiplist_itor_invalidate ( skiplist_itor * itor)

Definition at line 537 of file skiplist.c.

◆ skiplist_itor_key()

const void * skiplist_itor_key ( const skiplist_itor * itor)

Definition at line 630 of file skiplist.c.

◆ skiplist_itor_last()

bool skiplist_itor_last ( skiplist_itor * itor)

Definition at line 583 of file skiplist.c.

◆ skiplist_itor_new()

skiplist_itor * skiplist_itor_new ( skiplist * list)

Definition at line 500 of file skiplist.c.

◆ skiplist_itor_next()

bool skiplist_itor_next ( skiplist_itor * itor)

Definition at line 543 of file skiplist.c.

◆ skiplist_itor_nextn()

bool skiplist_itor_nextn ( skiplist_itor * itor,
size_t count )

Definition at line 559 of file skiplist.c.

Here is the call graph for this function:

◆ skiplist_itor_prev()

bool skiplist_itor_prev ( skiplist_itor * itor)

Definition at line 551 of file skiplist.c.

◆ skiplist_itor_prevn()

bool skiplist_itor_prevn ( skiplist_itor * itor,
size_t count )

Definition at line 568 of file skiplist.c.

Here is the call graph for this function:

◆ skiplist_itor_remove()

bool skiplist_itor_remove ( skiplist_itor * itor)

Definition at line 653 of file skiplist.c.

Here is the call graph for this function:

◆ skiplist_itor_search()

bool skiplist_itor_search ( skiplist_itor * itor,
const void * key )

Definition at line 600 of file skiplist.c.

◆ skiplist_itor_search_ge()

bool skiplist_itor_search_ge ( skiplist_itor * itor,
const void * key )

Definition at line 618 of file skiplist.c.

◆ skiplist_itor_search_gt()

bool skiplist_itor_search_gt ( skiplist_itor * itor,
const void * key )

Definition at line 624 of file skiplist.c.

◆ skiplist_itor_search_le()

bool skiplist_itor_search_le ( skiplist_itor * itor,
const void * key )

Definition at line 606 of file skiplist.c.

◆ skiplist_itor_search_lt()

bool skiplist_itor_search_lt ( skiplist_itor * itor,
const void * key )

Definition at line 612 of file skiplist.c.

◆ skiplist_itor_valid()

bool skiplist_itor_valid ( const skiplist_itor * itor)

Definition at line 531 of file skiplist.c.

◆ skiplist_link_count_histogram()

size_t skiplist_link_count_histogram ( const skiplist * list,
size_t counts[],
size_t ncounts )

Definition at line 484 of file skiplist.c.

◆ skiplist_new()

skiplist * skiplist_new ( dict_compare_func cmp_func,
unsigned max_link )

Definition at line 111 of file skiplist.c.

◆ skiplist_remove()

dict_remove_result skiplist_remove ( skiplist * list,
const void * key )

Definition at line 362 of file skiplist.c.

◆ skiplist_search()

void ** skiplist_search ( skiplist * list,
const void * key )

Definition at line 327 of file skiplist.c.

◆ skiplist_search_ge()

void ** skiplist_search_ge ( skiplist * list,
const void * key )

Definition at line 348 of file skiplist.c.

◆ skiplist_search_gt()

void ** skiplist_search_gt ( skiplist * list,
const void * key )

Definition at line 355 of file skiplist.c.

◆ skiplist_search_le()

void ** skiplist_search_le ( skiplist * list,
const void * key )

Definition at line 334 of file skiplist.c.

◆ skiplist_search_lt()

void ** skiplist_search_lt ( skiplist * list,
const void * key )

Definition at line 341 of file skiplist.c.

◆ skiplist_traverse()

size_t skiplist_traverse ( skiplist * list,
dict_visit_func visit,
void * user_data )

Definition at line 428 of file skiplist.c.

◆ skiplist_verify()

bool skiplist_verify ( const skiplist * list)

Definition at line 445 of file skiplist.c.