/***************************************************************************/
/* */
/*ftlist.h */
/* */
/*Generic list support for FreeType (specification). */
/* */
/*Copyright 1996-2015 by */
/*David Turner, Robert Wilhelm, and Werner Lemberg.*/
/* */
/*This file is part of the FreeType project, and may only be used, */
/*modified, and distributed under the terms of the FreeType project*/
/*license, LICENSE.TXT.By continuing to use, modify, or distribute */
/*this file you indicate that you have read the license and*/
/*understand and accept it fully.*/
/* */
/***************************************************************************/
/*************************************************************************/
/* */
/*This file implements functions relative to list processing.Its */
/*data structures are defined in `freetype.h. */
/* */
/*************************************************************************/
#ifndef __FTLIST_H__
#define __FTLIST_H__
#include
#include FT_FREETYPE_H
#ifdef FREETYPE_H
#error freetype.h of FreeType 1 has been loaded!
#error Please fix the directory search order for header files
#error so that freetype.h of FreeType 2 is found first.
#endif
FT_BEGIN_HEADER
/*************************************************************************/
/* */
/*
/*list_processing*/
/* */
/*
/*List Processing*/
/* */
/*
/*Simple management of lists.*/
/* */
/*
/*This section contains various definitions related to list*/
/*processing using doubly-linked nodes.*/
/* */
/*
/*FT_List*/
/*FT_ListNode*/
/*FT_ListRec */
/*FT_ListNodeRec */
/* */
/*FT_List_Add*/
/*FT_List_Insert */
/*FT_List_Find */
/*FT_List_Remove */
/*FT_List_Up */
/*FT_List_Iterate*/
/*FT_List_Iterator */
/*FT_List_Finalize */
/*FT_List_Destructor */
/* */
/*************************************************************************/
/*************************************************************************/
/* */
/*
/*FT_List_Find */
/* */
/*
/*Find the list node for a given listed object.*/
/* */
/**/
/*list :: A pointer to the parent list.*/
/*data :: The address of the listed object.*/
/* */
/*
/*List node.NULL if it wasnt found. */
/* */
FT_EXPORT( FT_ListNode )
FT_List_Find( FT_Listlist,
void*data );
/*************************************************************************/
/* */
/*
/*FT_List_Add*/
/* */
/*
/*Append an element to the end of a list.*/
/* */
/*
/*list :: A pointer to the parent list.*/
/*node :: The node to append.*/
/* */
FT_EXPORT( void )
FT_List_Add( FT_Listlist,
FT_ListNodenode );
/*************************************************************************/
/* */
/*
/*FT_List_Insert */
/* */
/*
/*Insert an element at the head of a list. */
/* */
/*
/*list :: A pointer to parent list.*/
/*node :: The node to insert.*/
/* */
FT_EXPORT( void )
FT_List_Insert( FT_Listlist,
FT_ListNodenode );
/*************************************************************************/
/* */
/*
/*FT_List_Remove */
/* */
/*
/*Remove a node from a list.This function doesnt check whether*/
/*the node is in the list! */
/* */
/**/
/*node :: The node to remove.*/
/* */
/*
/*list :: A pointer to the parent list.*/
/* */
FT_EXPORT( void )
FT_List_Remove( FT_Listlist,
FT_ListNodenode );
/*************************************************************************/
/* */
/*
/*FT_List_Up */
/* */
/*
/*Move a node to the head/top of a list.Used to maintain LRU */
/*lists. */
/* */
/*
/*list :: A pointer to the parent list.*/
/*node :: The node to move.*/
/* */
FT_EXPORT( void )
FT_List_Up( FT_Listlist,
FT_ListNodenode );
/*************************************************************************/
/* */
/*
/*FT_List_Iterator */
/* */
/*
/*An FT_List iterator function that is called during a list parse*/
/*by @FT_List_Iterate. */
/* */
/**/
/*node :: The current iteration list node. */
/* */
/*user :: A typeless pointer passed to @FT_List_Iterate. */
/*Can be used to point to the iterations state. */
/* */
typedef FT_Error
(*FT_List_Iterator)( FT_ListNodenode,
void*user );
/*************************************************************************/
/* */
/*
/*FT_List_Iterate*/
/* */
/*
/*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.*/
/* */
/**/
/*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.*/
/* */
/*
/*The result (a FreeType error code) of the last iterator call.*/
/* */
FT_EXPORT( FT_Error )
FT_List_Iterate( FT_List list,
FT_List_Iteratoriterator,
void* user );
/*************************************************************************/
/* */
/*
/*FT_List_Destructor */
/* */
/*
/*An @FT_List iterator function that is called during a list */
/*finalization by @FT_List_Finalize to destroy all elements in a */
/*given list.*/
/* */
/**/
/*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 iterations state. */
/* */
typedef void
(*FT_List_Destructor)( FT_Memorymemory,
void*data,
void*user );
/*************************************************************************/
/* */
/*
/*FT_List_Finalize */
/* */
/*
/*Destroy all elements in the list as well as the list itself. */
/* */
/**/
/*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. */
/* */
/*
/*This function expects that all nodes added by @FT_List_Add or*/
/*@FT_List_Insert have been dynamically allocated. */
/* */
FT_EXPORT( void )
FT_List_Finalize( FT_List list,
FT_List_Destructordestroy,
FT_Memory memory,
void* user );
/* */
FT_END_HEADER
#endif /* __FTLIST_H__ */
/* END */
Reviews
There are no reviews yet.