set eol-style:native
[reactos.git] / reactos / lib / rtl / generictable.c
1 /* COPYRIGHT: See COPYING in the top level directory
2 * PROJECT: ReactOS system libraries
3 * PURPOSE: Generic Table Implementation
4 * FILE: lib/rtl/genertictbl.c
5 * PROGRAMMERS:
6 */
7
8 /* INCLUDES *****************************************************************/
9
10 #include <rtl.h>
11
12 #define NDEBUG
13 #include <debug.h>
14
15 /* FUNCTIONS *****************************************************************/
16
17 /*
18 * @unimplemented
19 */
20 BOOLEAN
21 NTAPI
22 RtlDeleteElementGenericTable (
23 PRTL_GENERIC_TABLE Table,
24 PVOID Buffer
25 )
26 {
27 UNIMPLEMENTED;
28 return FALSE;
29 }
30
31 /*
32 * @unimplemented
33 */
34 BOOLEAN
35 NTAPI
36 RtlDeleteElementGenericTableAvl (
37 PRTL_AVL_TABLE Table,
38 PVOID Buffer
39 )
40 {
41 UNIMPLEMENTED;
42 return FALSE;
43 }
44
45 /*
46 * @unimplemented
47 */
48 PVOID
49 NTAPI
50 RtlEnumerateGenericTable (
51 PRTL_GENERIC_TABLE Table,
52 BOOLEAN Restart
53 )
54 {
55 UNIMPLEMENTED;
56 return 0;
57 }
58
59 /*
60 * @unimplemented
61 */
62 PVOID
63 NTAPI
64 RtlEnumerateGenericTableAvl (
65 PRTL_AVL_TABLE Table,
66 BOOLEAN Restart
67 )
68 {
69 UNIMPLEMENTED;
70 return 0;
71 }
72
73 /*
74 * @unimplemented
75 */
76 PVOID
77 NTAPI
78 RtlEnumerateGenericTableLikeADirectory (
79 IN PRTL_AVL_TABLE Table,
80 IN PRTL_AVL_MATCH_FUNCTION MatchFunction,
81 IN PVOID MatchData,
82 IN ULONG NextFlag,
83 IN OUT PVOID *RestartKey,
84 IN OUT PULONG DeleteCount,
85 IN OUT PVOID Buffer
86 )
87 {
88 UNIMPLEMENTED;
89 return 0;
90 }
91
92 /*
93 * @unimplemented
94 */
95 PVOID
96 NTAPI
97 RtlEnumerateGenericTableWithoutSplaying (
98 PRTL_GENERIC_TABLE Table,
99 PVOID *RestartKey
100 )
101 {
102 UNIMPLEMENTED;
103 return 0;
104 }
105
106 /*
107 * @unimplemented
108 */
109 PVOID
110 NTAPI
111 RtlEnumerateGenericTableWithoutSplayingAvl (
112 PRTL_AVL_TABLE Table,
113 PVOID *RestartKey
114 )
115 {
116 UNIMPLEMENTED;
117 return 0;
118 }
119
120 /*
121 * @unimplemented
122 */
123 PVOID
124 NTAPI
125 RtlGetElementGenericTable(
126 PRTL_GENERIC_TABLE Table,
127 ULONG I
128 )
129 {
130 UNIMPLEMENTED;
131 return 0;
132 }
133
134 /*
135 * @unimplemented
136 */
137 PVOID
138 NTAPI
139 RtlGetElementGenericTableAvl (
140 PRTL_AVL_TABLE Table,
141 ULONG I
142 )
143 {
144 UNIMPLEMENTED;
145 return 0;
146 }
147
148 /*
149 * @implemented
150 */
151 VOID
152 NTAPI
153 RtlInitializeGenericTable(PRTL_GENERIC_TABLE Table,
154 PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine,
155 PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine,
156 PRTL_GENERIC_FREE_ROUTINE FreeRoutine,
157 PVOID TableContext)
158 {
159 /* Initialize the table to default and passed values */
160 InitializeListHead(&Table->InsertOrderList);
161 Table->TableRoot = NULL;
162 Table->NumberGenericTableElements = 0;
163 Table->WhichOrderedElement = 0;
164 Table->OrderedPointer = &Table->InsertOrderList;
165 Table->CompareRoutine = CompareRoutine;
166 Table->AllocateRoutine = AllocateRoutine;
167 Table->FreeRoutine = FreeRoutine;
168 Table->TableContext = TableContext;
169 }
170
171
172 /*
173 * @implemented
174 */
175 VOID NTAPI
176 RtlInitializeGenericTableAvl(IN OUT PRTL_AVL_TABLE Table,
177 IN PRTL_AVL_COMPARE_ROUTINE CompareRoutine,
178 IN PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine,
179 IN PRTL_AVL_FREE_ROUTINE FreeRoutine,
180 IN PVOID TableContext)
181 {
182 RtlZeroMemory(Table,
183 sizeof(RTL_AVL_TABLE));
184 Table->BalancedRoot.Parent = &Table->BalancedRoot;
185
186 Table->CompareRoutine = CompareRoutine;
187 Table->AllocateRoutine = AllocateRoutine;
188 Table->FreeRoutine = FreeRoutine;
189 Table->TableContext = TableContext;
190 }
191
192
193 /*
194 * @unimplemented
195 */
196 PVOID
197 NTAPI
198 RtlInsertElementGenericTable (
199 PRTL_GENERIC_TABLE Table,
200 PVOID Buffer,
201 ULONG BufferSize,
202 PBOOLEAN NewElement OPTIONAL
203 )
204 {
205 UNIMPLEMENTED;
206 return 0;
207 }
208
209 /*
210 * @unimplemented
211 */
212 PVOID
213 NTAPI
214 RtlInsertElementGenericTableAvl (
215 PRTL_AVL_TABLE Table,
216 PVOID Buffer,
217 ULONG BufferSize,
218 PBOOLEAN NewElement OPTIONAL
219 )
220 {
221 UNIMPLEMENTED;
222 return 0;
223 }
224
225 /*
226 * @unimplemented
227 */
228 PVOID
229 NTAPI
230 RtlInsertElementGenericTableFull (
231 PRTL_GENERIC_TABLE Table,
232 PVOID Buffer,
233 ULONG BufferSize,
234 PBOOLEAN NewElement OPTIONAL,
235 PVOID NodeOrParent,
236 TABLE_SEARCH_RESULT SearchResult
237 )
238 {
239 UNIMPLEMENTED;
240 return 0;
241 }
242
243 /*
244 * @unimplemented
245 */
246 PVOID
247 NTAPI
248 RtlInsertElementGenericTableFullAvl (
249 PRTL_AVL_TABLE Table,
250 PVOID Buffer,
251 ULONG BufferSize,
252 PBOOLEAN NewElement OPTIONAL,
253 PVOID NodeOrParent,
254 TABLE_SEARCH_RESULT SearchResult
255 )
256 {
257 UNIMPLEMENTED;
258 return 0;
259 }
260
261
262 /*
263 * @unimplemented
264 */
265 BOOLEAN
266 NTAPI
267 RtlIsGenericTableEmpty (
268 PRTL_GENERIC_TABLE Table
269 )
270 {
271 UNIMPLEMENTED;
272 return FALSE;
273 }
274
275 /*
276 * @unimplemented
277 */
278 BOOLEAN
279 NTAPI
280 RtlIsGenericTableEmptyAvl (
281 PRTL_AVL_TABLE Table
282 )
283 {
284 UNIMPLEMENTED;
285 return FALSE;
286 }
287
288
289 /*
290 * @unimplemented
291 */
292 PVOID
293 NTAPI
294 RtlLookupElementGenericTable (
295 PRTL_GENERIC_TABLE Table,
296 PVOID Buffer
297 )
298 {
299 UNIMPLEMENTED;
300 return 0;
301 }
302
303 /*
304 * @unimplemented
305 */
306 PVOID
307 NTAPI
308 RtlLookupElementGenericTableAvl (
309 PRTL_AVL_TABLE Table,
310 PVOID Buffer
311 )
312 {
313 UNIMPLEMENTED;
314 return 0;
315 }
316
317 /*
318 * @unimplemented
319 */
320 PVOID
321 NTAPI
322 RtlLookupElementGenericTableFull (
323 PRTL_GENERIC_TABLE Table,
324 PVOID Buffer,
325 OUT PVOID *NodeOrParent,
326 OUT TABLE_SEARCH_RESULT *SearchResult
327 )
328 {
329 UNIMPLEMENTED;
330 return 0;
331 }
332
333 /*
334 * @unimplemented
335 */
336 PVOID
337 NTAPI
338 RtlLookupElementGenericTableFullAvl (
339 PRTL_AVL_TABLE Table,
340 PVOID Buffer,
341 OUT PVOID *NodeOrParent,
342 OUT TABLE_SEARCH_RESULT *SearchResult
343 )
344 {
345 UNIMPLEMENTED;
346 return 0;
347 }
348
349
350 /*
351 * @implemented
352 */
353 ULONG NTAPI
354 RtlNumberGenericTableElements(IN PRTL_GENERIC_TABLE Table)
355 {
356 return Table->NumberGenericTableElements;
357 }
358
359
360 /*
361 * @implemented
362 */
363 ULONG NTAPI
364 RtlNumberGenericTableElementsAvl(IN PRTL_AVL_TABLE Table)
365 {
366 return Table->NumberGenericTableElements;
367 }
368
369 /* EOF */