| /* |
| ***************************************************************************************** |
| * * |
| * COPYRIGHT: * |
| * (C) Copyright Taligent, Inc., 1997 * |
| * (C) Copyright International Business Machines Corporation, 1997-1998 * |
| * 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 rbcache.h |
| * |
| * Modification History: |
| * |
| * Date Name Description |
| * 03/20/97 aliu Creation. |
| * 04/29/97 aliu Convert to use new Hashtable protocol. |
| * 04/15/99 damiba plugged in new C hashtable |
| ***************************************************************************************** |
| */ |
| |
| #include "uhash.h" |
| #include "unistr.h" |
| |
| /** |
| * A class which represents an ordinary Hashtable which deletes its contents when it |
| * is destroyed. This class stores UnicodeStringKeys as its keys, and |
| * ResourceBundleData objects as its values. |
| */ |
| class U_COMMON_API ResourceBundleCache // Not really external; just making the compiler happy |
| { |
| public: |
| ResourceBundleCache(); |
| ~ResourceBundleCache(); |
| UHashtable* hashTable; |
| private: |
| static void deleteValue(void* value); |
| }; |
| |
| /** |
| * A hashtable which owns its keys and values and deletes them when it is destroyed. |
| * This class stored UnicodeStringKeys as its keys, and the value 1 as its objects. |
| * in other words, the objects are just (void*)1. The only real information is |
| * whether or not a key is present. Semantically, if a key is present, it means |
| * that the corresponding filename has been visited already. |
| */ |
| class U_COMMON_API VisitedFileCache // Not really external; just making the compiler happy |
| { |
| public: |
| |
| VisitedFileCache(); |
| ~VisitedFileCache(); |
| UHashtable* hashTable; |
| inline bool_t wasVisited(const UnicodeString& filename) const; |
| inline void markAsVisited(const UnicodeString& filename); |
| }; |
| |
| inline bool_t VisitedFileCache::wasVisited(const UnicodeString& filename) const |
| { |
| return (uhash_get(hashTable, uhash_hashUString(filename.getUChars())) != 0); |
| } |
| |
| inline void VisitedFileCache::markAsVisited(const UnicodeString& filename) |
| { |
| UErrorCode err = ZERO_ERROR; |
| uhash_putKey(hashTable, uhash_hashUString(filename.getUChars()), (void*)TRUE, &err); |
| } |
| |
| |
| //eof |