18#ifndef MAGICKCORE_HASHMAP_H
19#define MAGICKCORE_HASHMAP_H
21#if defined(__cplusplus) || defined(c_plusplus)
25#define SmallHashmapSize 17
26#define MediumHashmapSize 509
27#define LargeHashmapSize 8191
28#define HugeHashmapSize 131071
36extern MagickExport HashmapInfo
37 *DestroyHashmap(HashmapInfo *),
38 *NewHashmap(
const size_t,
size_t (*)(
const void *),MagickBooleanType (*)
39 (
const void *,
const void *),
void *(*)(
void *),
void *(*)(
void *));
41extern MagickExport LinkedListInfo
42 *DestroyLinkedList(LinkedListInfo *,
void *(*)(
void *)),
43 *NewLinkedList(
const size_t);
45extern MagickExport MagickBooleanType
46 AppendValueToLinkedList(LinkedListInfo *,
const void *),
47 CompareHashmapString(
const void *,
const void *),
48 CompareHashmapStringInfo(
const void *,
const void *),
49 InsertValueInLinkedList(LinkedListInfo *,
const size_t,
const void *),
50 InsertValueInSortedLinkedList(LinkedListInfo *,
51 int (*)(
const void *,
const void *),
void **,
const void *),
52 IsHashmapEmpty(
const HashmapInfo *),
53 IsLinkedListEmpty(
const LinkedListInfo *),
54 LinkedListToArray(LinkedListInfo *,
void **),
55 PutEntryInHashmap(HashmapInfo *,
const void *,
const void *);
57extern MagickExport
size_t
58 GetNumberOfElementsInLinkedList(
const LinkedListInfo *),
59 GetNumberOfEntriesInHashmap(
const HashmapInfo *),
60 HashPointerType(
const void *),
61 HashStringType(
const void *),
62 HashStringInfoType(
const void *);
64extern MagickExport
void
65 ClearLinkedList(LinkedListInfo *,
void *(*)(
void *)),
66 *GetLastValueInLinkedList(LinkedListInfo *),
67 *GetNextKeyInHashmap(HashmapInfo *),
68 *GetNextValueInHashmap(HashmapInfo *),
69 *GetNextValueInLinkedList(LinkedListInfo *),
70 *GetValueFromHashmap(HashmapInfo *,
const void *),
71 *GetValueFromLinkedList(LinkedListInfo *,
const size_t),
72 *RemoveElementByValueFromLinkedList(LinkedListInfo *,
const void *),
73 *RemoveElementFromLinkedList(LinkedListInfo *,
const size_t),
74 *RemoveEntryFromHashmap(HashmapInfo *,
const void *),
75 *RemoveLastElementFromLinkedList(LinkedListInfo *),
76 ResetHashmapIterator(HashmapInfo *),
77 ResetLinkedListIterator(LinkedListInfo *);
79#if defined(__cplusplus) || defined(c_plusplus)