|  | /* | 
|  | ***************************************************************************************** | 
|  | *                                                                                       * | 
|  | * COPYRIGHT:                                                                            * | 
|  | *   (C) Copyright Taligent, Inc.,  1997                                                 * | 
|  | *   (C) Copyright International Business Machines Corporation,  1997-1999                    * | 
|  | *   Licensed Material - Program-Property of IBM - All Rights Reserved.                  * | 
|  | *   US Government Users Restricted Rights - Use, duplication, or disclosure             * | 
|  | *   restricted by GSA ADP Schedule Contract with IBM Corp.                              * | 
|  | *                                                                                       * | 
|  | ***************************************************************************************** | 
|  | */ | 
|  | //=============================================================================== | 
|  | // | 
|  | // File colcache.h | 
|  | // | 
|  | // CollationCache implements a persistent in-memory cache for | 
|  | // TableCollationData objects.  The goal of CollationCache is to improve | 
|  | // the memory footprint of a process which may have multiple threads | 
|  | // loading up the same TableCollation object.  Performance improvement is | 
|  | // strictly a secondary goal. | 
|  | // | 
|  | // Created by: Alan Liu | 
|  | // | 
|  | // Modification History: | 
|  | // | 
|  | //  Date        Name        Description | 
|  | //  2/11/97     aliu        Creation. | 
|  | //  2/12/97     aliu        Modified to work with TableCollationData. | 
|  | //  8/18/97     helena      Added internal API documentation. | 
|  | // | 
|  | //=============================================================================== | 
|  |  | 
|  | #ifndef COLCACHE_H | 
|  | #define COLCACHE_H | 
|  |  | 
|  | #include "uhash.h" | 
|  | #include "unistr.h" | 
|  |  | 
|  | class TableCollationData; | 
|  |  | 
|  | // Tell the VC++ compiler not to warn about DLL interface | 
|  | #ifdef _WIN32 | 
|  | #pragma warning( disable : 4251 ) | 
|  | #endif | 
|  |  | 
|  | //------------------------------------------------------------------------------- | 
|  | /** | 
|  | * CollationCache implements a simple cache for TableCollationData objects. | 
|  | * TableCollationData objects may be added to the cache, and looked up in the | 
|  | * cache.  When the cache is destroyed, all the TableCollationData objects are | 
|  | * deleted. | 
|  | */ | 
|  |  | 
|  | class CollationCache | 
|  | { | 
|  | public: | 
|  | /** | 
|  | * Default constructor. | 
|  | */ | 
|  | CollationCache(); | 
|  | /** | 
|  | * Destructor. | 
|  | */ | 
|  | virtual ~CollationCache(); | 
|  |  | 
|  | /** | 
|  | * ::Add and ::Find use a UnicodeString as the key to Collation objects in the | 
|  | * cache.  If Add is called twice with equivalent keys, but different | 
|  | * collation objects, the first collation object will be deleted when the | 
|  | * second one is added.  In general, this is undesirable; objects in the | 
|  | * cache are usually pointed to by various clients in the system.  For this | 
|  | * reason, clients should call Find to ensure a Collation object does not | 
|  | * already exist in the cache for the given key before calling Add. | 
|  | * @param key the unique key. | 
|  | * @param data the collation data object. | 
|  | * @return the found collation data object | 
|  | */ | 
|  | void                Add(const UnicodeString& key, TableCollationData* data); | 
|  | TableCollationData* Find(const UnicodeString& key); | 
|  |  | 
|  | private: | 
|  | UHashtable*   fHashtable; | 
|  | }; | 
|  |  | 
|  | #endif | 
|  | //eof |