libdict
Data Structure C Library
Loading...
Searching...
No Matches
sp_tree.h
Go to the documentation of this file.
1/*
2 * libdict -- splay tree interface.
3 *
4 * Copyright (c) 2001-2014, Farooq Mela
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
20 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28#ifndef LIBDICT_SP_TREE_H__
29#define LIBDICT_SP_TREE_H__
30
31#include "dict.h"
32
34
35typedef struct sp_tree sp_tree;
36
39size_t sp_tree_free(sp_tree* tree, dict_delete_func delete_func);
40
42 sp_tree_insert(sp_tree* tree, void* key);
43void** sp_tree_search(sp_tree* tree, const void* key);
44void** sp_tree_search_le(sp_tree* tree, const void* key);
45void** sp_tree_search_lt(sp_tree* tree, const void* key);
46void** sp_tree_search_ge(sp_tree* tree, const void* key);
47void** sp_tree_search_gt(sp_tree* tree, const void* key);
49 sp_tree_remove(sp_tree* tree, const void* key);
50size_t sp_tree_clear(sp_tree* tree, dict_delete_func delete_func);
51size_t sp_tree_traverse(sp_tree* tree, dict_visit_func visit, void* user_data);
52bool sp_tree_select(sp_tree* tree, size_t n, const void** key, void** datum);
53size_t sp_tree_count(const sp_tree* tree);
57bool sp_tree_verify(const sp_tree* tree);
58
59typedef struct sp_itor sp_itor;
60
64
65bool sp_itor_valid(const sp_itor* itor);
66void sp_itor_invalidate(sp_itor* itor);
67bool sp_itor_next(sp_itor* itor);
68bool sp_itor_prev(sp_itor* itor);
69bool sp_itor_nextn(sp_itor* itor, size_t count);
70bool sp_itor_prevn(sp_itor* itor, size_t count);
71bool sp_itor_first(sp_itor* itor);
72bool sp_itor_last(sp_itor* itor);
73bool sp_itor_search(sp_itor* itor, const void* key);
74bool sp_itor_search_le(sp_itor* itor, const void* key);
75bool sp_itor_search_lt(sp_itor* itor, const void* key);
76bool sp_itor_search_ge(sp_itor* itor, const void* key);
77bool sp_itor_search_gt(sp_itor* itor, const void* key);
78const void* sp_itor_key(const sp_itor* itor);
79void** sp_itor_datum(sp_itor* itor);
80int sp_itor_compare(const sp_itor* i1, const sp_itor* i2);
81bool sp_itor_remove(sp_itor* itor);
82
84
85#endif /* !LIBDICT_SP_TREE_H__ */
#define BEGIN_DECL
Definition dict.h:35
int(* dict_compare_func)(const void *, const void *)
Definition dict.h:54
void(* dict_delete_func)(void *, void *)
Definition dict.h:57
#define END_DECL
Definition dict.h:36
bool(* dict_visit_func)(const void *, void *, void *)
Definition dict.h:59
bool sp_itor_last(sp_itor *itor)
Definition sp_tree.c:475
dict * sp_dict_new(dict_compare_func cmp_func)
Definition sp_tree.c:124
void sp_itor_free(sp_itor *tree)
Definition sp_tree.c:467
dict_remove_result sp_tree_remove(sp_tree *tree, const void *key)
Definition sp_tree.c:375
void ** sp_itor_datum(sp_itor *itor)
Definition sp_tree.c:483
bool sp_itor_nextn(sp_itor *itor, size_t count)
Definition sp_tree.c:472
bool sp_itor_search_ge(sp_itor *itor, const void *key)
Definition sp_tree.c:480
bool sp_itor_prev(sp_itor *itor)
Definition sp_tree.c:471
dict_insert_result sp_tree_insert(sp_tree *tree, void *key)
Definition sp_tree.c:244
size_t sp_tree_clear(sp_tree *tree, dict_delete_func delete_func)
Definition sp_tree.c:138
bool sp_tree_select(sp_tree *tree, size_t n, const void **key, void **datum)
Definition sp_tree.c:386
size_t sp_tree_min_path_length(const sp_tree *tree)
Definition sp_tree.c:388
sp_itor * sp_itor_new(sp_tree *tree)
Definition sp_tree.c:443
bool sp_itor_next(sp_itor *itor)
Definition sp_tree.c:470
int sp_itor_compare(const sp_itor *i1, const sp_itor *i2)
Definition sp_tree.c:486
bool sp_itor_remove(sp_itor *itor)
Definition sp_tree.c:492
bool sp_itor_prevn(sp_itor *itor, size_t count)
Definition sp_tree.c:473
size_t sp_tree_max_path_length(const sp_tree *tree)
Definition sp_tree.c:389
void ** sp_tree_search_lt(sp_tree *tree, const void *key)
Definition sp_tree.c:314
dict_itor * sp_dict_itor_new(sp_tree *tree)
Definition sp_tree.c:454
size_t sp_tree_free(sp_tree *tree, dict_delete_func delete_func)
Definition sp_tree.c:137
size_t sp_tree_traverse(sp_tree *tree, dict_visit_func visit, void *user_data)
Definition sp_tree.c:385
void sp_itor_invalidate(sp_itor *itor)
Definition sp_tree.c:469
size_t sp_tree_count(const sp_tree *tree)
Definition sp_tree.c:387
void ** sp_tree_search_gt(sp_tree *tree, const void *key)
Definition sp_tree.c:338
void ** sp_tree_search_le(sp_tree *tree, const void *key)
Definition sp_tree.c:302
bool sp_itor_valid(const sp_itor *itor)
Definition sp_tree.c:468
bool sp_itor_search_le(sp_itor *itor, const void *key)
Definition sp_tree.c:478
bool sp_tree_verify(const sp_tree *tree)
Definition sp_tree.c:432
bool sp_itor_first(sp_itor *itor)
Definition sp_tree.c:474
size_t sp_tree_total_path_length(const sp_tree *tree)
Definition sp_tree.c:390
bool sp_itor_search_lt(sp_itor *itor, const void *key)
Definition sp_tree.c:479
const void * sp_itor_key(const sp_itor *itor)
Definition sp_tree.c:482
bool sp_itor_search_gt(sp_itor *itor, const void *key)
Definition sp_tree.c:481
sp_tree * sp_tree_new(dict_compare_func cmp_func)
Definition sp_tree.c:109
void ** sp_tree_search_ge(sp_tree *tree, const void *key)
Definition sp_tree.c:326
void ** sp_tree_search(sp_tree *tree, const void *key)
Definition sp_tree.c:280
bool sp_itor_search(sp_itor *itor, const void *key)
Definition sp_tree.c:477
Definition dict.h:151
dict_compare_func cmp_func
Definition sp_tree.c:59