14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*---------------------------------------------------------------------------* 24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * HashMap.h * 34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Copyright 2007, 2008 Nuance Communciations, Inc. * 54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the 'License'); * 74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * you may not use this file except in compliance with the License. * 84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * You may obtain a copy of the License at * 104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 * 114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Unless required by applicable law or agreed to in writing, software * 134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * distributed under the License is distributed on an 'AS IS' BASIS, * 144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * See the License for the specific language governing permissions and * 164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * limitations under the License. * 174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *---------------------------------------------------------------------------*/ 194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef __HASHMAP_H 214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define __HASHMAP_H 224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ESR_ReturnCode.h" 264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ESR_SharedPrefix.h" 274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ptypes.h" 284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <stdlib.h> 294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @addtogroup HashMapModule HashMap API functions 334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Hashed [key, value] mapping. 344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @{ 364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Hashed [key, value] mapping. 404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct HashMap_t 424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /** 444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Sets new mapping, storing a reference to the value. 454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * The key can be safely deallocated after this operation. 464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key Mapping key 494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Mapping value 504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null; ESR_OUT_OF_MEMORY if system is out of memory 514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode(*put)(struct HashMap_t* self, const LCHAR* key, void* value); 534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /** 554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Removes the mapping for this key from this map if present. 564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key Key whose mapping is to be removed from the map. 594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null 604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode(*remove)(struct HashMap_t* self, const LCHAR* key); 624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /** 644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Removes the mapping for this key from this map if present and frees the value. 654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key Key whose mapping is to be removed from the map. 684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null 694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode(*removeAndFree)(struct HashMap_t* self, const LCHAR* key); 714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /** 734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Removes the mappings for the key at the specified index. 744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param index Index of element to be removed 774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null; ESR_ARGUMENT_OUT_OF_BOUNDS if index is out of bounds 784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode(*removeAtIndex)(struct HashMap_t* self, const size_t index); 804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /** 824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Removes all mappings from this map. 834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null 864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode(*removeAll)(struct HashMap_t* self); 884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /** 904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Removes all mappings from this map and frees the values. 914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null 944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode(*removeAndFreeAll)(struct HashMap_t* self); 964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /** 984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Indicates if element is contained within the list. 994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 1004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 1014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key Key to check for 1024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param exists True if key was found 1034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null 1044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode(*containsKey)(struct HashMap_t* self, const LCHAR* key, ESR_BOOL* exists); 1064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /** 1084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns the number of mappings contained in this map. 1094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 1104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 1114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param size Returned size 1124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null 1134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode(*getSize)(struct HashMap_t* self, size_t* size); 1154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /** 1174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns the value to which the specified key is mapped in this identity hash map, 1184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * or null if the map contains no mapping for this key. 1194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 1204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 1214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key the key whose associated value is to be returned. 1224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value the value to which this map maps the specified key, or null if the 1234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * map contains no mapping for this key. 1244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null; ESR_NO_MATCH_ERROR if key cannot be found 1254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode(*get)(struct HashMap_t* self, const LCHAR* key, void** value); 1274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /** 1284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns the key at the specified index. 1294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 1304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 1314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param index the key index 1324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key the key at the specified index 1334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null; ESR_ARGUMENT_OUT_OF_BOUNDS if index is out of bounds 1344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode(*getKeyAtIndex)(struct HashMap_t* self, const size_t index, LCHAR** key); 1364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /** 1374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns the value at the specified index. 1384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 1394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 1404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param index the key index 1414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value the value at the specified index 1424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null; ESR_ARGUMENT_OUT_OF_BOUNDS if index is out of bounds 1434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode(*getValueAtIndex)(struct HashMap_t* self, const size_t index, void** value); 1454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /** 1464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Destroys the HashMap. 1474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 1484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 1494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null 1504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode(*destroy)(struct HashMap_t* self); 1524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 1534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectHashMap; 1544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 1564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Creates a new HashMap. 1574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 1584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 1594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self or the value it points to are null 1604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode HashMapCreate(HashMap** self); 1624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 1634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Creates a new HashMap. 1644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 1654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param bins The number of hashing bins to be used. 1664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 1674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self or the value it points to are null 1684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode HashMapCreateBins(size_t nbBins, HashMap** self); 1704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 1714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Sets new mapping, storing a reference to the value. 1724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * The key can be safely deallocated after this operation. 1734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 1744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 1754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key Mapping key 1764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Mapping value 1774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null; ESR_OUT_OF_MEMORY if system is out of memory 1784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode HashMapPut(HashMap* self, const LCHAR* key, void* value); 1804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 1814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Removes the mapping for this key from this map if present. 1824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * The value can be safely deallocated after this operation. 1834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * If the map previously contained a mapping for this key, the old value is replaced, 1844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * but not deallocated. 1854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 1864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 1874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key Key whose mapping is to be removed from the map. 1884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null 1894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode HashMapRemove(HashMap* self, const LCHAR* key); 1914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 1924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Removes the mapping for this key from this map if present and frees the value. 1934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * The value can be safely deallocated after this operation. 1944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 1954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 1964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key Key whose mapping is to be removed from the map. 1974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null 1984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode HashMapRemoveAndFree(HashMap* self, const LCHAR* key); 2004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Removes the mappings for the key at the specified index. 2024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 2034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 2044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param index Index of element to be removed 2054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null; ESR_ARGUMENT_OUT_OF_BOUNDS if index is out of bounds 2064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode HashMapRemoveAtIndex(HashMap* self, const size_t index); 2084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Removes all mappings from this map. 2104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 2114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 2124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null 2134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode HashMapRemoveAll(HashMap* self); 2154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Removes all mappings from this map and frees the values. 2174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 2184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 2194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null 2204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode HashMapRemoveAndFreeAll(HashMap* self); 2224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Indicates if element is contained within the list. 2244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 2254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 2264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key Key to check for 2274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param exists True if key was found 2284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null 2294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode HashMapContainsKey(HashMap* self, const LCHAR* key, ESR_BOOL* exists); 2314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns the number of mappings contained in this map. 2334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 2344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 2354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param size Returned size 2364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null 2374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode HashMapGetSize(HashMap* self, size_t* size); 2394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns the value to which the specified key is mapped in this identity hash map, 2414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * or null if the map contains no mapping for this key. 2424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 2434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 2444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key the key whose associated value is to be returned. 2454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value the value to which this map maps the specified key, or null if the 2464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * map contains no mapping for this key. 2474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null; ESR_NO_MATCH_ERROR if key cannot be found 2484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode HashMapGet(HashMap* self, const LCHAR* key, void** value); 2504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns the key at the specified index. 2524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 2534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 2544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param index the key index 2554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key the key at the specified index 2564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null; ESR_ARGUMENT_OUT_OF_BOUNDS if index is out of bounds 2574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode HashMapGetKeyAtIndex(HashMap* self, const size_t index, LCHAR** key); 2594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns the value at the specified index. 2614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 2624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 2634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param index the key index 2644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value the key at the specified index 2654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null; ESR_ARGUMENT_OUT_OF_BOUNDS if index is out of bounds 2664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode HashMapGetValueAtIndex(HashMap* self, const size_t index, void** value); 2684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Destroys an HashMap. 2704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 2714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self HashMap handle 2724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if self is null 2734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode HashMapDestroy(HashMap* self); 2754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @} 2784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif /* __HASHMAP_H */ 282