%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
// © 2020 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html // charstrmap.h // created: 2020sep01 Frank Yung-Fong Tang #ifndef __CHARSTRMAP_H__ #define __CHARSTRMAP_H__ #include <utility> #include "unicode/utypes.h" #include "unicode/uobject.h" #include "uhash.h" U_NAMESPACE_BEGIN /** * Map of const char * keys & values. * Stores pointers as is: Does not own/copy/adopt/release strings. */ class CharStringMap final : public UMemory { public: /** Constructs an unusable non-map. */ CharStringMap() : map(nullptr) {} CharStringMap(int32_t size, UErrorCode &errorCode) { map = uhash_openSize(uhash_hashChars, uhash_compareChars, uhash_compareChars, size, &errorCode); } CharStringMap(CharStringMap &&other) U_NOEXCEPT : map(other.map) { other.map = nullptr; } CharStringMap(const CharStringMap &other) = delete; ~CharStringMap() { uhash_close(map); } CharStringMap &operator=(CharStringMap &&other) U_NOEXCEPT { map = other.map; other.map = nullptr; return *this; } CharStringMap &operator=(const CharStringMap &other) = delete; const char *get(const char *key) const { return static_cast<const char *>(uhash_get(map, key)); } void put(const char *key, const char *value, UErrorCode &errorCode) { uhash_put(map, const_cast<char *>(key), const_cast<char *>(value), &errorCode); } private: UHashtable *map; }; U_NAMESPACE_END #endif // __CHARSTRMAP_H__