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).
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).
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).
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).
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).
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).
Remove a node from a list. This function doesn't check whether the node is in the list!
input
inout
list |
A pointer to the parent list.
|
FT_List_Up
Defined in FT_LIST_H (freetype/ftlist.h).
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).
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).
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_Iterate . Can be used to point to the iteration's state.
|
FT_List_Finalize
Defined in FT_LIST_H (freetype/ftlist.h).
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 FT_List_Iterate . It can be used to point to the iteration's state.
|