ReactOS 0.4.16-dev-1025-gd3456f5
ftlist.h
Go to the documentation of this file.
1/****************************************************************************
2 *
3 * ftlist.h
4 *
5 * Generic list support for FreeType (specification).
6 *
7 * Copyright (C) 1996-2019 by
8 * David Turner, Robert Wilhelm, and Werner Lemberg.
9 *
10 * This file is part of the FreeType project, and may only be used,
11 * modified, and distributed under the terms of the FreeType project
12 * license, LICENSE.TXT. By continuing to use, modify, or distribute
13 * this file you indicate that you have read the license and
14 * understand and accept it fully.
15 *
16 */
17
18
19 /**************************************************************************
20 *
21 * This file implements functions relative to list processing. Its data
22 * structures are defined in `freetype.h`.
23 *
24 */
25
26
27#ifndef FTLIST_H_
28#define FTLIST_H_
29
30
31#include <ft2build.h>
32#include FT_FREETYPE_H
33
34#ifdef FREETYPE_H
35#error "freetype.h of FreeType 1 has been loaded!"
36#error "Please fix the directory search order for header files"
37#error "so that freetype.h of FreeType 2 is found first."
38#endif
39
40
42
43
44 /**************************************************************************
45 *
46 * @section:
47 * list_processing
48 *
49 * @title:
50 * List Processing
51 *
52 * @abstract:
53 * Simple management of lists.
54 *
55 * @description:
56 * This section contains various definitions related to list processing
57 * using doubly-linked nodes.
58 *
59 * @order:
60 * FT_List
61 * FT_ListNode
62 * FT_ListRec
63 * FT_ListNodeRec
64 *
65 * FT_List_Add
66 * FT_List_Insert
67 * FT_List_Find
68 * FT_List_Remove
69 * FT_List_Up
70 * FT_List_Iterate
71 * FT_List_Iterator
72 * FT_List_Finalize
73 * FT_List_Destructor
74 *
75 */
76
77
78 /**************************************************************************
79 *
80 * @function:
81 * FT_List_Find
82 *
83 * @description:
84 * Find the list node for a given listed object.
85 *
86 * @input:
87 * list ::
88 * A pointer to the parent list.
89 * data ::
90 * The address of the listed object.
91 *
92 * @return:
93 * List node. `NULL` if it wasn't found.
94 */
97 void* data );
98
99
100 /**************************************************************************
101 *
102 * @function:
103 * FT_List_Add
104 *
105 * @description:
106 * Append an element to the end of a list.
107 *
108 * @inout:
109 * list ::
110 * A pointer to the parent list.
111 * node ::
112 * The node to append.
113 */
114 FT_EXPORT( void )
117
118
119 /**************************************************************************
120 *
121 * @function:
122 * FT_List_Insert
123 *
124 * @description:
125 * Insert an element at the head of a list.
126 *
127 * @inout:
128 * list ::
129 * A pointer to parent list.
130 * node ::
131 * The node to insert.
132 */
133 FT_EXPORT( void )
136
137
138 /**************************************************************************
139 *
140 * @function:
141 * FT_List_Remove
142 *
143 * @description:
144 * Remove a node from a list. This function doesn't check whether the
145 * node is in the list!
146 *
147 * @input:
148 * node ::
149 * The node to remove.
150 *
151 * @inout:
152 * list ::
153 * A pointer to the parent list.
154 */
155 FT_EXPORT( void )
158
159
160 /**************************************************************************
161 *
162 * @function:
163 * FT_List_Up
164 *
165 * @description:
166 * Move a node to the head/top of a list. Used to maintain LRU lists.
167 *
168 * @inout:
169 * list ::
170 * A pointer to the parent list.
171 * node ::
172 * The node to move.
173 */
174 FT_EXPORT( void )
177
178
179 /**************************************************************************
180 *
181 * @functype:
182 * FT_List_Iterator
183 *
184 * @description:
185 * An FT_List iterator function that is called during a list parse by
186 * @FT_List_Iterate.
187 *
188 * @input:
189 * node ::
190 * The current iteration list node.
191 *
192 * user ::
193 * A typeless pointer passed to @FT_List_Iterate. Can be used to point
194 * to the iteration's state.
195 */
196 typedef FT_Error
198 void* user );
199
200
201 /**************************************************************************
202 *
203 * @function:
204 * FT_List_Iterate
205 *
206 * @description:
207 * Parse a list and calls a given iterator function on each element.
208 * Note that parsing is stopped as soon as one of the iterator calls
209 * returns a non-zero value.
210 *
211 * @input:
212 * list ::
213 * A handle to the list.
214 * iterator ::
215 * An iterator function, called on each node of the list.
216 * user ::
217 * A user-supplied field that is passed as the second argument to the
218 * iterator.
219 *
220 * @return:
221 * The result (a FreeType error code) of the last iterator call.
222 */
226 void* user );
227
228
229 /**************************************************************************
230 *
231 * @functype:
232 * FT_List_Destructor
233 *
234 * @description:
235 * An @FT_List iterator function that is called during a list
236 * finalization by @FT_List_Finalize to destroy all elements in a given
237 * list.
238 *
239 * @input:
240 * system ::
241 * The current system object.
242 *
243 * data ::
244 * The current object to destroy.
245 *
246 * user ::
247 * A typeless pointer passed to @FT_List_Iterate. It can be used to
248 * point to the iteration's state.
249 */
250 typedef void
252 void* data,
253 void* user );
254
255
256 /**************************************************************************
257 *
258 * @function:
259 * FT_List_Finalize
260 *
261 * @description:
262 * Destroy all elements in the list as well as the list itself.
263 *
264 * @input:
265 * list ::
266 * A handle to the list.
267 *
268 * destroy ::
269 * A list destructor that will be applied to each element of the list.
270 * Set this to `NULL` if not needed.
271 *
272 * memory ::
273 * The current memory object that handles deallocation.
274 *
275 * user ::
276 * A user-supplied field that is passed as the last argument to the
277 * destructor.
278 *
279 * @note:
280 * This function expects that all nodes added by @FT_List_Add or
281 * @FT_List_Insert have been dynamically allocated.
282 */
283 FT_EXPORT( void )
287 void* user );
288
289 /* */
290
291
293
294#endif /* FTLIST_H_ */
295
296
297/* END */
void destroy(_Tp *__pointer)
Definition: _construct.h:278
void user(int argc, const char *argv[])
Definition: cmds.c:1350
Definition: list.h:37
#define FT_EXPORT(x)
Definition: ftconfig.h:481
#define FT_END_HEADER
Definition: ftheader.h:54
#define FT_BEGIN_HEADER
Definition: ftheader.h:36
FT_List_Up(FT_List list, FT_ListNode node)
Definition: ftutil.c:348
FT_Error(* FT_List_Iterator)(FT_ListNode node, void *user)
Definition: ftlist.h:197
void(* FT_List_Destructor)(FT_Memory memory, void *data, void *user)
Definition: ftlist.h:251
FT_List_Insert(FT_List list, FT_ListNode node)
Definition: ftutil.c:295
FT_List_Finalize(FT_List list, FT_List_Destructor destroy, FT_Memory memory, void *user)
Definition: ftutil.c:413
FT_List_Remove(FT_List list, FT_ListNode node)
Definition: ftutil.c:321
FT_BEGIN_HEADER FT_List_Find(FT_List list, void *data)
Definition: ftutil.c:244
FT_List_Iterate(FT_List list, FT_List_Iterator iterator, void *user)
Definition: ftutil.c:381
FT_List_Add(FT_List list, FT_ListNode node)
Definition: ftutil.c:269
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
Definition: ftsystem.h:65
int FT_Error
Definition: fttypes.h:299
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
static char memory[1024 *256]
Definition: process.c:116
Definition: dlist.c:348