1 /*---------------------------------------------------------------------------* 2 * HashMapImpl.h * 3 * * 4 * Copyright 2007, 2008 Nuance Communciations, Inc. * 5 * * 6 * Licensed under the Apache License, Version 2.0 (the 'License'); * 7 * you may not use this file except in compliance with the License. * 8 * * 9 * You may obtain a copy of the License at * 10 * http://www.apache.org/licenses/LICENSE-2.0 * 11 * * 12 * Unless required by applicable law or agreed to in writing, software * 13 * distributed under the License is distributed on an 'AS IS' BASIS, * 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 15 * See the License for the specific language governing permissions and * 16 * limitations under the License. * 17 * * 18 *---------------------------------------------------------------------------*/ 19 20 #ifndef __HASHMAPIMPL_H 21 #define __HASHMAPIMPL_H 22 23 24 25 #include <assert.h> 26 #include <stdlib.h> 27 #include "ESR_ReturnCode.h" 28 #include "phashtable.h" 29 30 /** 31 * HashMap implementation. 32 */ 33 typedef struct HashMapImpl_t 34 { 35 /** 36 * Interface functions that must be implemented. 37 */ 38 HashMap Interface; 39 40 /** 41 * Actual hash table implementation. 42 **/ 43 PHashTable *table; 44 } 45 HashMapImpl; 46 47 /** 48 * Default implementation. 49 */ 50 ESR_SHARED_API ESR_ReturnCode HashMap_Put(HashMap* self, const LCHAR* key, void* value); 51 /** 52 * Default implementation. 53 */ 54 ESR_SHARED_API ESR_ReturnCode HashMap_Remove(HashMap* self, const LCHAR* key); 55 /** 56 * Default implementation. 57 */ 58 ESR_SHARED_API ESR_ReturnCode HashMap_RemoveAndFree(HashMap* self, const LCHAR* key); 59 /** 60 * Default implementation. 61 */ 62 ESR_SHARED_API ESR_ReturnCode HashMap_RemoveAtIndex(HashMap* self, const size_t index); 63 /** 64 * Default implementation. 65 */ 66 ESR_SHARED_API ESR_ReturnCode HashMap_RemoveAll(HashMap* self); 67 /** 68 * Default implementation. 69 */ 70 ESR_SHARED_API ESR_ReturnCode HashMap_RemoveAndFreeAll(HashMap* self); 71 /** 72 * Default implementation. 73 */ 74 ESR_SHARED_API ESR_ReturnCode HashMap_ContainsKey(HashMap* self, const LCHAR* key, ESR_BOOL* exists); 75 /** 76 * Default implementation. 77 */ 78 ESR_SHARED_API ESR_ReturnCode HashMap_Get(HashMap* self, const LCHAR* key, void** value); 79 /** 80 * Default implementation. 81 */ 82 ESR_SHARED_API ESR_ReturnCode HashMap_GetKeyAtIndex(HashMap* self, const size_t index, LCHAR** key); 83 /** 84 * Default implementation. 85 */ 86 ESR_SHARED_API ESR_ReturnCode HashMap_GetValueAtIndex(HashMap* self, const size_t index, void** value); 87 /** 88 * Default implementation. 89 */ 90 ESR_SHARED_API ESR_ReturnCode HashMap_GetSize(HashMap* self, size_t* size); 91 /** 92 * Default implementation. 93 */ 94 ESR_SHARED_API ESR_ReturnCode HashMap_Destroy(HashMap* self); 95 96 #endif /* __HASHMAPIMPL_H */ 97