home *** CD-ROM | disk | FTP | other *** search
- /*
- *****************************************************************************************
- * *
- * 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
-