FreeType » Docs » Support API » List Processing
List Processing¶
Synopsis¶
This section contains various definitions related to list processing using doubly-linked nodes.
FT_List¶
Defined in FT_TYPES_H (freetype/fttypes.h).
typedef struct FT_ListRec_* FT_List;
A handle to a list record (see FT_ListRec
).
FT_ListNode¶
Defined in FT_TYPES_H (freetype/fttypes.h).
typedef struct FT_ListNodeRec_* FT_ListNode;
Many elements and objects in FreeType are listed through an FT_List
record (see FT_ListRec
). As its name suggests, an FT_ListNode is a handle to a single list element.
FT_ListRec¶
Defined in FT_TYPES_H (freetype/fttypes.h).
typedef struct FT_ListRec_ { FT_ListNode head; FT_ListNode tail; } FT_ListRec;
A structure used to hold a simple doubly-linked list. These are used in many parts of FreeType.
fields
head |
The head (first element) of doubly-linked list. |
tail |
The tail (last element) of doubly-linked list. |
FT_ListNodeRec¶
Defined in FT_TYPES_H (freetype/fttypes.h).
typedef struct FT_ListNodeRec_ { FT_ListNode prev; FT_ListNode next; void* data; } FT_ListNodeRec;
A structure used to hold a single list element.
fields
prev |
The previous element in the list. NULL if first. |
next |
The next element in the list. NULL if last. |
data |
A typeless pointer to the listed object. |
FT_List_Add¶
Defined in FT_LIST_H (freetype/ftlist.h).
FT_EXPORT( void ) FT_List_Add( FT_List list, FT_ListNode node );
Append an element to the end of a list.
inout
list |
A pointer to the parent list. |
node |
The node to append. |
FT_List_Insert¶
Defined in FT_LIST_H (freetype/ftlist.h).
FT_EXPORT( void ) FT_List_Insert( FT_List list, FT_ListNode node );
Insert an element at the head of a list.
inout
list |
A pointer to parent list. |
node |
The node to insert. |
FT_List_Find¶
Defined in FT_LIST_H (freetype/ftlist.h).
FT_EXPORT( FT_ListNode ) FT_List_Find( FT_List list, void* data );
Find the list node for a given listed object.
input
list |
A pointer to the parent list. |
data |
The address of the listed object. |
return
List node. NULL if it wasn't found.
FT_List_Remove¶
Defined in FT_LIST_H (freetype/ftlist.h).
FT_EXPORT( void ) FT_List_Remove( FT_List list, FT_ListNode node );
Remove a node from a list. This function doesn't check whether the node is in the list!
input
node |
The node to remove. |
inout
list |
A pointer to the parent list. |
FT_List_Up¶
Defined in FT_LIST_H (freetype/ftlist.h).
FT_EXPORT( void ) FT_List_Up( FT_List list, FT_ListNode node );
Move a node to the head/top of a list. Used to maintain LRU lists.
inout
list |
A pointer to the parent list. |
node |
The node to move. |
FT_List_Iterate¶
Defined in FT_LIST_H (freetype/ftlist.h).
FT_EXPORT( FT_Error ) FT_List_Iterate( FT_List list, FT_List_Iterator iterator, void* user );
Parse a list and calls a given iterator function on each element. Note that parsing is stopped as soon as one of the iterator calls returns a non-zero value.
input
list |
A handle to the list. |
iterator |
An iterator function, called on each node of the list. |
user |
A user-supplied field that is passed as the second argument to the iterator. |
return
The result (a FreeType error code) of the last iterator call.
FT_List_Iterator¶
Defined in FT_LIST_H (freetype/ftlist.h).
typedef FT_Error (*FT_List_Iterator)( FT_ListNode node, void* user );
An FT_List iterator function that is called during a list parse by FT_List_Iterate
.
input
node |
The current iteration list node. |
user |
A typeless pointer passed to |
FT_List_Finalize¶
Defined in FT_LIST_H (freetype/ftlist.h).
FT_EXPORT( void ) FT_List_Finalize( FT_List list, FT_List_Destructor destroy, FT_Memory memory, void* user );
Destroy all elements in the list as well as the list itself.
input
list |
A handle to the list. |
destroy |
A list destructor that will be applied to each element of the list. Set this to NULL if not needed. |
memory |
The current memory object that handles deallocation. |
user |
A user-supplied field that is passed as the last argument to the destructor. |
note
This function expects that all nodes added by FT_List_Add
or FT_List_Insert
have been dynamically allocated.
FT_List_Destructor¶
Defined in FT_LIST_H (freetype/ftlist.h).
typedef void (*FT_List_Destructor)( FT_Memory memory, void* data, void* user );
An FT_List
iterator function that is called during a list finalization by FT_List_Finalize
to destroy all elements in a given list.
input
system |
The current system object. |
data |
The current object to destroy. |
user |
A typeless pointer passed to |