/** * 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; }
/** * Creates a new tree map. * * This method has a time complexity of O(1). * * @return pblMap * retPtr != NULL: A pointer to the new map. * @return pblMap * retPtr == NULL: An error, see pbl_errno: * * <BR>PBL_ERROR_OUT_OF_MEMORY - Out of memory. */ PblMap * pblMapNewTreeMap( void ) { PblMap * pblMap = (PblMap *)pbl_malloc0( "pblMapNewTreeMap", sizeof(PblMap) ); if( !pblMap ) { return NULL; } pblMap->entrySet = pblSetNewTreeSet(); if( !pblMap->entrySet ) { PBL_FREE( pblMap ); return NULL; } pblSetSetCompareFunction( pblMap->entrySet, pblMapEntryCompareFunction ); pblSetSetHashValueFunction( pblMap->entrySet, pblMapEntryHashValue ); return pblMap; }