Files
react-native-devtools-frontend/front_end/common/CharacterIdMap.js
T
Blink Reformat 4c46d0969f The Great Blink mv for source files, part 2.
Move and rename files.

NOAUTOREVERT=true
NOPRESUBMIT=true
NOTREECHECKS=true
Bug: 768828
TBR=darin@chromium.org
NOTRY=true

Change-Id: I66d3b155808bc5bdbf237b80208e1e552bcf7f28
Reviewed-on: https://chromium-review.googlesource.com/1001153
Reviewed-by: Blink Reformat <blink-reformat@chromium.org>
Commit-Queue: Blink Reformat <blink-reformat@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#549061}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 0aee4434a4dba42a42abaea9bfbc0cd196a63bc1
2018-04-07 15:32:37 +00:00

44 lines
1.1 KiB
JavaScript

// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @template T
* @unrestricted
*/
Common.CharacterIdMap = class {
constructor() {
/** @type {!Map<T, string>} */
this._elementToCharacter = new Map();
/** @type {!Map<string, T>} */
this._characterToElement = new Map();
this._charCode = 33;
}
/**
* @param {T} object
* @return {string}
*/
toChar(object) {
let character = this._elementToCharacter.get(object);
if (!character) {
if (this._charCode >= 0xFFFF)
throw new Error('CharacterIdMap ran out of capacity!');
character = String.fromCharCode(this._charCode++);
this._elementToCharacter.set(object, character);
this._characterToElement.set(character, object);
}
return character;
}
/**
* @param {string} character
* @return {?T}
*/
fromChar(character) {
const object = this._characterToElement.get(character);
if (object === undefined)
return null;
return object;
}
};