Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Side by Side Diff: source/libvpx/vpx_mem/memory_manager/include/cavl_if.h

Issue 1124333011: libvpx: Pull from upstream (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/libvpx.git@master
Patch Set: only update to last nights LKGR Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #ifndef VPX_MEM_MEMORY_MANAGER_INCLUDE_CAVL_IF_H_
12 #define VPX_MEM_MEMORY_MANAGER_INCLUDE_CAVL_IF_H_
13
14 /* Abstract AVL Tree Generic C Package.
15 ** Interface generation header file.
16 **
17 ** This code is in the public domain. See cavl_tree.html for interface
18 ** documentation.
19 **
20 ** Version: 1.5 Author: Walt Karas
21 */
22
23 /* This header contains the definition of CHAR_BIT (number of bits in a
24 ** char). */
25 #include <limits.h>
26
27 #undef L_
28 #undef L_EST_LONG_BIT
29 #undef L_SIZE
30 #undef L_SC
31 #undef L_LONG_BIT
32 #undef L_BIT_ARR_DEFN
33
34 #ifndef AVL_SEARCH_TYPE_DEFINED_
35 #define AVL_SEARCH_TYPE_DEFINED_
36
37 typedef enum {
38 AVL_EQUAL = 1,
39 AVL_LESS = 2,
40 AVL_GREATER = 4,
41 AVL_LESS_EQUAL = AVL_EQUAL | AVL_LESS,
42 AVL_GREATER_EQUAL = AVL_EQUAL | AVL_GREATER
43 }
44 avl_search_type;
45
46 #endif
47
48 #ifdef AVL_UNIQUE
49
50 #define L_ AVL_UNIQUE
51
52 #else
53
54 #define L_(X) X
55
56 #endif
57
58 /* Determine storage class for function prototypes. */
59 #ifdef AVL_PRIVATE
60
61 #define L_SC static
62
63 #else
64
65 #define L_SC extern
66
67 #endif
68
69 #ifdef AVL_SIZE
70
71 #define L_SIZE AVL_SIZE
72
73 #else
74
75 #define L_SIZE unsigned long
76
77 #endif
78
79 typedef struct {
80 #ifdef AVL_INSIDE_STRUCT
81
82 AVL_INSIDE_STRUCT
83
84 #endif
85
86 AVL_HANDLE root;
87 }
88 L_(avl);
89
90 /* Function prototypes. */
91
92 L_SC void L_(init)(L_(avl) *tree);
93
94 L_SC int L_(is_empty)(L_(avl) *tree);
95
96 L_SC AVL_HANDLE L_(insert)(L_(avl) *tree, AVL_HANDLE h);
97
98 L_SC AVL_HANDLE L_(search)(L_(avl) *tree, AVL_KEY k, avl_search_type st);
99
100 L_SC AVL_HANDLE L_(search_least)(L_(avl) *tree);
101
102 L_SC AVL_HANDLE L_(search_greatest)(L_(avl) *tree);
103
104 L_SC AVL_HANDLE L_(remove)(L_(avl) *tree, AVL_KEY k);
105
106 L_SC AVL_HANDLE L_(subst)(L_(avl) *tree, AVL_HANDLE new_node);
107
108 #ifdef AVL_BUILD_ITER_TYPE
109
110 L_SC int L_(build)(
111 L_(avl) *tree, AVL_BUILD_ITER_TYPE p, L_SIZE num_nodes);
112
113 #endif
114
115 /* ANSI C/ISO C++ require that a long have at least 32 bits. Set
116 ** L_EST_LONG_BIT to be the greatest multiple of 8 in the range
117 ** 32 - 64 (inclusive) that is less than or equal to the number of
118 ** bits in a long.
119 */
120
121 #if (((LONG_MAX >> 31) >> 7) == 0)
122
123 #define L_EST_LONG_BIT 32
124
125 #elif (((LONG_MAX >> 31) >> 15) == 0)
126
127 #define L_EST_LONG_BIT 40
128
129 #elif (((LONG_MAX >> 31) >> 23) == 0)
130
131 #define L_EST_LONG_BIT 48
132
133 #elif (((LONG_MAX >> 31) >> 31) == 0)
134
135 #define L_EST_LONG_BIT 56
136
137 #else
138
139 #define L_EST_LONG_BIT 64
140
141 #endif
142
143 /* Number of bits in a long. */
144 #define L_LONG_BIT (sizeof(long) * CHAR_BIT)
145
146 /* The macro L_BIT_ARR_DEFN defines a bit array whose index is a (0-based)
147 ** node depth. The definition depends on whether the maximum depth is more
148 ** or less than the number of bits in a single long.
149 */
150
151 #if ((AVL_MAX_DEPTH) > L_EST_LONG_BIT)
152
153 /* Maximum depth may be more than number of bits in a long. */
154
155 #define L_BIT_ARR_DEFN(NAME) \
156 unsigned long NAME[((AVL_MAX_DEPTH) + L_LONG_BIT - 1) / L_LONG_BIT];
157
158 #else
159
160 /* Maximum depth is definitely less than number of bits in a long. */
161
162 #define L_BIT_ARR_DEFN(NAME) unsigned long NAME;
163
164 #endif
165
166 /* Iterator structure. */
167 typedef struct {
168 /* Tree being iterated over. */
169 L_(avl) *tree_;
170
171 /* Records a path into the tree. If bit n is true, indicates
172 ** take greater branch from the nth node in the path, otherwise
173 ** take the less branch. bit 0 gives branch from root, and
174 ** so on. */
175 L_BIT_ARR_DEFN(branch)
176
177 /* Zero-based depth of path into tree. */
178 unsigned depth;
179
180 /* Handles of nodes in path from root to current node (returned by *). */
181 AVL_HANDLE path_h[(AVL_MAX_DEPTH) - 1];
182 }
183 L_(iter);
184
185 /* Iterator function prototypes. */
186
187 L_SC void L_(start_iter)(
188 L_(avl) *tree, L_(iter) *iter, AVL_KEY k, avl_search_type st);
189
190 L_SC void L_(start_iter_least)(L_(avl) *tree, L_(iter) *iter);
191
192 L_SC void L_(start_iter_greatest)(L_(avl) *tree, L_(iter) *iter);
193
194 L_SC AVL_HANDLE L_(get_iter)(L_(iter) *iter);
195
196 L_SC void L_(incr_iter)(L_(iter) *iter);
197
198 L_SC void L_(decr_iter)(L_(iter) *iter);
199
200 L_SC void L_(init_iter)(L_(iter) *iter);
201
202 #define AVL_IMPL_INIT 1
203 #define AVL_IMPL_IS_EMPTY (1 << 1)
204 #define AVL_IMPL_INSERT (1 << 2)
205 #define AVL_IMPL_SEARCH (1 << 3)
206 #define AVL_IMPL_SEARCH_LEAST (1 << 4)
207 #define AVL_IMPL_SEARCH_GREATEST (1 << 5)
208 #define AVL_IMPL_REMOVE (1 << 6)
209 #define AVL_IMPL_BUILD (1 << 7)
210 #define AVL_IMPL_START_ITER (1 << 8)
211 #define AVL_IMPL_START_ITER_LEAST (1 << 9)
212 #define AVL_IMPL_START_ITER_GREATEST (1 << 10)
213 #define AVL_IMPL_GET_ITER (1 << 11)
214 #define AVL_IMPL_INCR_ITER (1 << 12)
215 #define AVL_IMPL_DECR_ITER (1 << 13)
216 #define AVL_IMPL_INIT_ITER (1 << 14)
217 #define AVL_IMPL_SUBST (1 << 15)
218
219 #define AVL_IMPL_ALL (~0)
220
221 #undef L_
222 #undef L_EST_LONG_BIT
223 #undef L_SIZE
224 #undef L_SC
225 #undef L_LONG_BIT
226 #undef L_BIT_ARR_DEFN
227
228 #endif // VPX_MEM_MEMORY_MANAGER_INCLUDE_CAVL_IF_H_
OLDNEW
« no previous file with comments | « source/libvpx/vpx_mem/memory_manager/hmm_true.c ('k') | source/libvpx/vpx_mem/memory_manager/include/cavl_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698