|
WizardsToolkit
1.0.7
|
00001 /* 00002 Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization 00003 dedicated to making software imaging solutions freely available. 00004 00005 You may not use this file except in compliance with the License. 00006 obtain a copy of the License at 00007 00008 http://www.wizards-toolkit.org/script/license.php 00009 00010 Unless required by applicable law or agreed to in writing, software 00011 distributed under the License is distributed on an "AS IS" BASIS, 00012 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 See the License for the specific language governing permissions and 00014 limitations under the License. 00015 00016 Wizard's Toolkit hash methods. 00017 */ 00018 #ifndef _WIZARDSTOOLKIT_HASHMAP_H 00019 #define _WIZARDSTOOLKIT_HASHMAP_H 00020 00021 #if defined(__cplusplus) || defined(c_plusplus) 00022 extern "C" { 00023 #endif 00024 00025 #define SmallHashmapSize 17 00026 #define MediumHashmapSize 509 00027 #define LargeHashmapSize 8191 00028 #define HugeHashmapSize 131071 00029 00030 typedef struct _HashmapInfo 00031 HashmapInfo; 00032 00033 typedef struct _LinkedListInfo 00034 LinkedListInfo; 00035 00036 extern WizardExport HashmapInfo 00037 *DestroyHashmap(HashmapInfo *), 00038 *NewHashmap(const size_t,size_t (*)(const void *), 00039 WizardBooleanType (*)(const void *,const void *),void *(*)(void *), 00040 void *(*)(void *)); 00041 00042 extern WizardExport LinkedListInfo 00043 *DestroyLinkedList(LinkedListInfo *,void *(*)(void *)), 00044 *NewLinkedList(const size_t); 00045 00046 extern WizardExport WizardBooleanType 00047 AppendValueToLinkedList(LinkedListInfo *,const void *), 00048 CompareHashmapString(const void *,const void *), 00049 CompareHashmapStringInfo(const void *,const void *), 00050 InsertValueInLinkedList(LinkedListInfo *,const size_t,const void *), 00051 InsertValueInSortedLinkedList(LinkedListInfo *, 00052 int (*)(const void *,const void *),void **,const void *), 00053 IsHashmapEmpty(const HashmapInfo *), 00054 IsLinkedListEmpty(const LinkedListInfo *), 00055 LinkedListToArray(LinkedListInfo *,void **), 00056 PutEntryInHashmap(HashmapInfo *,const void *,const void *); 00057 00058 extern WizardExport size_t 00059 HashPointerType(const void *), 00060 HashStringType(const void *), 00061 HashStringInfoType(const void *); 00062 00063 extern WizardExport size_t 00064 GetNumberOfElementsInLinkedList(const LinkedListInfo *), 00065 GetNumberOfEntriesInHashmap(const HashmapInfo *); 00066 00067 extern WizardExport void 00068 ClearLinkedList(LinkedListInfo *,void *(*)(void *)), 00069 *GetLastValueInLinkedList(LinkedListInfo *), 00070 *GetNextKeyInHashmap(HashmapInfo *), 00071 *GetNextValueInHashmap(HashmapInfo *), 00072 *GetNextValueInLinkedList(LinkedListInfo *), 00073 *GetValueFromHashmap(HashmapInfo *,const void *), 00074 *GetValueFromLinkedList(LinkedListInfo *,const size_t), 00075 *RemoveElementByValueFromLinkedList(LinkedListInfo *,const void *), 00076 *RemoveElementFromLinkedList(LinkedListInfo *,const size_t), 00077 *RemoveEntryFromHashmap(HashmapInfo *,const void *), 00078 *RemoveLastElementFromLinkedList(LinkedListInfo *), 00079 ResetHashmapIterator(HashmapInfo *), 00080 ResetLinkedListIterator(LinkedListInfo *); 00081 00082 #if defined(__cplusplus) || defined(c_plusplus) 00083 } 00084 #endif 00085 00086 #endif