xref: /llvm-project/lldb/tools/lldb-dap/src-ts/disposable-context.ts (revision b5d4332286154838557a8ab5c76b794e85d946b3)
1import * as vscode from "vscode";
2
3/**
4 * This class provides a simple wrapper around vscode.Disposable that allows
5 * for registering additional disposables.
6 */
7export class DisposableContext implements vscode.Disposable {
8  private _disposables: vscode.Disposable[] = [];
9
10  constructor() {}
11
12  public dispose() {
13    for (const disposable of this._disposables) {
14      disposable.dispose();
15    }
16    this._disposables = [];
17  }
18
19  /**
20   * Push an additional disposable to the context.
21   *
22   * @param disposable The disposable to register.
23   */
24  public pushSubscription(disposable: vscode.Disposable) {
25    this._disposables.push(disposable);
26  }
27}
28