// © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html /* ****************************************************************************** * Copyright (C) 2015, International Business Machines Corporation and * others. All Rights Reserved. ****************************************************************************** * * File UNIFIEDCACHE.H - The ICU Unified cache. ****************************************************************************** */ #ifndef __UNIFIED_CACHE_H__ #define __UNIFIED_CACHE_H__ #include "utypeinfo.h" // for 'typeid' to work #include "unicode/uobject.h" #include "unicode/locid.h" #include "sharedobject.h" #include "unicode/unistr.h" #include "cstring.h" #include "ustr_imp.h" struct UHashtable; struct UHashElement; U_NAMESPACE_BEGIN class UnifiedCache; /** * A base class for all cache keys. */ class U_COMMON_API CacheKeyBase : public UObject { … }; /** * Templated version of CacheKeyBase. * A key of type LocaleCacheKey<T> maps to a value of type T. */ template<typename T> class CacheKey : public CacheKeyBase { … }; /** * Cache key based on locale. * A key of type LocaleCacheKey<T> maps to a value of type T. */ template<typename T> class LocaleCacheKey : public CacheKey<T> { … }; /** * The unified cache. A singleton type. * Design doc here: * https://docs.google.com/document/d/1RwGQJs4N4tawNbf809iYDRCvXoMKqDJihxzYt1ysmd8/edit?usp=sharing */ class U_COMMON_API UnifiedCache : public UnifiedCacheBase { … }; U_NAMESPACE_END #endif