libcute 0.1
Loading...
Searching...
No Matches
Classes | Typedefs | Enumerations | Functions
skip_list.h File Reference
#include "macro.h"
#include "memory/allocator.h"
#include "object/destructor.h"
#include "object/optional.h"
#include "object/result.h"
#include "state.h"
#include "utility.h"
#include <stdbool.h>
#include <stddef.h>
Include dependency graph for skip_list.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  cu_SkipList
 

Typedefs

typedef int(* cu_SkipList_CmpFn) (const void *a, const void *b)
 

Enumerations

enum  cu_SkipList_Error { CU_SKIPLIST_ERROR_NONE = 0 , CU_SKIPLIST_ERROR_OOM , CU_SKIPLIST_ERROR_INVALID_LAYOUT , CU_SKIPLIST_ERROR_INVALID }
 

Functions

cu_SkipList_Result cu_SkipList_create (cu_Allocator allocator, cu_Layout key_layout, cu_Layout value_layout, size_t max_level, cu_SkipList_CmpFn_Optional cmp, cu_Destructor_Optional key_destructor, cu_Destructor_Optional value_destructor, cu_State state)
 
void cu_SkipList_destroy (cu_SkipList *list)
 
cu_SkipList_Error_Optional cu_SkipList_insert (cu_SkipList *list, void *key, void *value)
 
Ptr_Optional cu_SkipList_find (const cu_SkipList *list, const void *key)
 
cu_SkipList_Error_Optional cu_SkipList_remove (cu_SkipList *list, const void *key)
 
bool cu_SkipList_iter (const cu_SkipList *list, struct cu_SkipList_Node **node, void **key, void **value)
 

Detailed Description

Simple skip list map.

Function Documentation

◆ cu_SkipList_create()

cu_SkipList_Result cu_SkipList_create ( cu_Allocator  allocator,
cu_Layout  key_layout,
cu_Layout  value_layout,
size_t  max_level,
cu_SkipList_CmpFn_Optional  cmp,
cu_Destructor_Optional  key_destructor,
cu_Destructor_Optional  value_destructor,
cu_State  state 
)

Create a new skip list using state for random level generation.