00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef MAGICKCORE_LINKED_LIST_H
00019 #define MAGICKCORE_LINKED_LIST_H
00020
00021 #if defined(__cplusplus) || defined(c_plusplus)
00022 extern "C" {
00023 #endif
00024
00025 typedef struct _LinkedListInfo
00026 LinkedListInfo;
00027
00028 extern MagickExport LinkedListInfo
00029 *DestroyLinkedList(LinkedListInfo *,void *(*)(void *)),
00030 *NewLinkedList(const size_t);
00031
00032 extern MagickExport MagickBooleanType
00033 AppendValueToLinkedList(LinkedListInfo *,const void *),
00034 InsertValueInLinkedList(LinkedListInfo *,const size_t,const void *),
00035 InsertValueInSortedLinkedList(LinkedListInfo *,
00036 int (*)(const void *,const void *),void **,const void *),
00037 IsLinkedListEmpty(const LinkedListInfo *),
00038 LinkedListToArray(LinkedListInfo *,void **);
00039
00040 extern MagickExport size_t
00041 GetNumberOfElementsInLinkedList(const LinkedListInfo *);
00042
00043 extern MagickExport void
00044 ClearLinkedList(LinkedListInfo *,void *(*)(void *)),
00045 *GetLastValueInLinkedList(LinkedListInfo *),
00046 *GetNextValueInLinkedList(LinkedListInfo *),
00047 *GetValueFromLinkedList(LinkedListInfo *,const size_t),
00048 *RemoveElementByValueFromLinkedList(LinkedListInfo *,const void *),
00049 *RemoveElementFromLinkedList(LinkedListInfo *,const size_t),
00050 *RemoveLastElementFromLinkedList(LinkedListInfo *),
00051 ResetLinkedListIterator(LinkedListInfo *);
00052
00053 #if defined(__cplusplus) || defined(c_plusplus)
00054 }
00055 #endif
00056
00057 #endif