C Standard Library Extensions
1.1.2
Main Page
Modules
Files
File List
cext
cxtree.h
1
/* $Id: cxtree.h,v 1.5 2011/02/21 14:15:31 rpalsa Exp $
2
*
3
* This file is part of the ESO C Extension Library
4
* Copyright (C) 2001-2011 European Southern Observatory
5
*
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2 of the License, or
9
* (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
/*
22
* $Author: rpalsa $
23
* $Date: 2011/02/21 14:15:31 $
24
* $Revision: 1.5 $
25
* $Name: cpl-6_3_1 $
26
*/
27
28
#ifndef CX_TREE_H
29
#define CX_TREE_H
30
31
#include <cxmemory.h>
32
33
CX_BEGIN_DECLS
34
35
typedef
struct
_cx_tnode_ *cx_tree_iterator;
36
typedef
const
struct
_cx_tnode_ *cx_tree_const_iterator;
37
38
typedef
struct
_cx_tree_ cx_tree;
39
75
typedef
cxbool (*
cx_tree_compare_func
)(cxcptr, cxcptr);
76
77
/*
78
* Create, copy and destroy operations
79
*/
80
81
cx_tree *
cx_tree_new
(
cx_tree_compare_func
, cx_free_func, cx_free_func);
82
void
cx_tree_delete
(cx_tree *);
83
84
/*
85
* Nonmodifying operations
86
*/
87
88
cxsize
cx_tree_size
(
const
cx_tree *);
89
cxbool
cx_tree_empty
(
const
cx_tree *);
90
cxsize
cx_tree_max_size
(
const
cx_tree *);
91
cx_tree_compare_func
cx_tree_key_comp
(
const
cx_tree *);
92
93
/*
94
* Special search operations
95
*/
96
97
cxsize
cx_tree_count
(
const
cx_tree *, cxcptr);
98
cx_tree_iterator
cx_tree_find
(
const
cx_tree *, cxcptr);
99
cx_tree_iterator
cx_tree_lower_bound
(
const
cx_tree *, cxcptr);
100
cx_tree_iterator
cx_tree_upper_bound
(
const
cx_tree *, cxcptr);
101
void
cx_tree_equal_range
(
const
cx_tree *, cxcptr, cx_tree_iterator *,
102
cx_tree_iterator *);
103
104
/*
105
* Assignment operations
106
*/
107
108
void
cx_tree_swap
(cx_tree *, cx_tree *);
109
cxptr
cx_tree_assign
(cx_tree *, cx_tree_iterator, cxcptr);
110
111
/*
112
* Element access
113
*/
114
115
cxptr
cx_tree_get_key
(
const
cx_tree *, cx_tree_const_iterator);
116
cxptr
cx_tree_get_value
(
const
cx_tree *, cx_tree_const_iterator);
117
118
/*
119
* Iterator functions
120
*/
121
122
cx_tree_iterator
cx_tree_begin
(
const
cx_tree *);
123
cx_tree_iterator
cx_tree_end
(
const
cx_tree *);
124
cx_tree_iterator
cx_tree_next
(
const
cx_tree *, cx_tree_const_iterator);
125
cx_tree_iterator
cx_tree_previous
(
const
cx_tree *, cx_tree_const_iterator);
126
127
128
/*
129
* Inserting and removing elements
130
*/
131
132
cx_tree_iterator
cx_tree_insert_unique
(cx_tree *, cxcptr, cxcptr);
133
cx_tree_iterator
cx_tree_insert_equal
(cx_tree *, cxcptr, cxcptr);
134
void
cx_tree_erase_position
(cx_tree *, cx_tree_iterator);
135
void
cx_tree_erase_range
(cx_tree *, cx_tree_iterator, cx_tree_iterator);
136
cxsize
cx_tree_erase
(cx_tree *, cxcptr);
137
void
cx_tree_clear
(cx_tree *);
138
139
/*
140
* Debugging
141
*/
142
143
cxbool
cx_tree_verify
(
const
cx_tree *);
144
145
CX_END_DECLS
146
147
#endif
/* CX_TREE_H */
Generated by
1.8.2