forked from mirrors/gecko-dev
		
	Update to ICU 68.2 by running "update-icu.sh" with "maint/maint-68" as the target. Differential Revision: https://phabricator.services.mozilla.com/D101389
		
			
				
	
	
		
			55 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// © 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__
 |