/** * Returns a pblHashSet with a shallow copy of this collection instance. * An application specific hash value function can be set. * * The elements themselves are not copied. * * NULL elements contained in the collection are silently ignored. * * This method has a memory and time complexity of O(N), * with N being the number of elements in the collection. * * @return PblSet * retPtr != NULL: A pointer to the new set. * @return PblSet * retPtr == NULL: An error, see pbl_errno: * * <BR>PBL_ERROR_OUT_OF_MEMORY - Out of memory. * <BR>PBL_ERROR_PARAM_COLLECTION - The collection cannot be iterated. * <BR>PBL_ERROR_CONCURRENT_MODIFICATION - The collection was modified concurrently. * <BR>PBL_ERROR_OUT_OF_BOUNDS - Maximum capacity of the hash set exceeded. */ PblSet * pblCollectionConvertToHashSet( PblCollection * collection, /** The collection to convert */ int ( *hashValue ) /** The hash value function for the new set, may be NULL */ ( const void* element /** The element to get the hash value for */ )) { PblSet * set = pblSetNewHashSet(); if( !set ) { return NULL; } set->compare = collection->compare; if( hashValue ) { ( (PblHashSet*)set )->hashValue = hashValue; } else if( PBL_SET_IS_HASH_SET( collection ) ) { ( (PblHashSet*)set )->hashValue = ( (PblHashSet*)collection )->hashValue; } if( pblSetAddAll( set, collection ) < 0 ) { pblSetFree( set ); return NULL; } return set; }
/** * Removes all of the mappings from this map and frees the map's memory from heap. * * For hash maps this method has a time complexity of O(N). * For tree maps this method has a time complexity of O(N * Log N). * * @return void */ void pblMapFree( /* */ PblMap * map /** The map to free */ ) { pblMapClear( map ); pblSetFree( map->entrySet ); PBL_FREE(map); }
/** * Returns a pblTreeSet with a shallow copy of this collection instance. * * The elements themselves are not copied. * * NULL elements contained in the collection are silently ignored. * * This method has a memory complexity of O( N ) and a time complexity of O(N * Log N), * with N being the number of elements in the collection. * * @return PblSet * retPtr != NULL: A pointer to the new set. * @return PblSet * retPtr == NULL: An error, see pbl_errno: * * <BR>PBL_ERROR_OUT_OF_MEMORY - Out of memory. * <BR>PBL_ERROR_PARAM_COLLECTION - The collection cannot be iterated. * <BR>PBL_ERROR_CONCURRENT_MODIFICATION - The collection was modified concurrently. */ PblSet * pblCollectionConvertToTreeSet( PblCollection * collection /** The collection to convert */ ) { PblSet * set = pblSetNewTreeSet(); if( !set ) { return NULL; } set->compare = collection->compare; if( pblSetAddAll( set, collection ) < 0 ) { pblSetFree( set ); return NULL; } return set; }