mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-09 21:28:43 +08:00
For all comments that contained both the unrestricted annotation and any other potential annotation, remove only the unrestricted annotation. R=szuend@chromium.org No-Presubmit: True Bug: 1011811 Change-Id: I27dd67f657cdb1a9233d768eea81cabe2591f5f7 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2569759 Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org> Reviewed-by: Simon Zünd <szuend@chromium.org>
46 lines
1.1 KiB
JavaScript
46 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
|
|
*/
|
|
export class CharacterIdMap {
|
|
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;
|
|
}
|
|
}
|