+++ /dev/null
-/**
- * Copyright (c) 2018 The xterm.js authors. All rights reserved.
- * @license MIT
- */
-
-import { IDisposable } from 'common/Types';
-
-/**
- * A base class that can be extended to provide convenience methods for managing the lifecycle of an
- * object and its components.
- */
-export abstract class Disposable implements IDisposable {
- protected _disposables: IDisposable[] = [];
- protected _isDisposed: boolean = false;
-
- constructor() {
- }
-
- /**
- * Disposes the object, triggering the `dispose` method on all registered IDisposables.
- */
- public dispose(): void {
- this._isDisposed = true;
- this._disposables.forEach(d => d.dispose());
- this._disposables.length = 0;
- }
-
- /**
- * Registers a disposable object.
- * @param d The disposable to register.
- */
- public register<T extends IDisposable>(d: T): void {
- this._disposables.push(d);
- }
-
- /**
- * Unregisters a disposable object if it has been registered, if not do
- * nothing.
- * @param d The disposable to unregister.
- */
- public unregister<T extends IDisposable>(d: T): void {
- const index = this._disposables.indexOf(d);
- if (index !== -1) {
- this._disposables.splice(index, 1);
- }
- }
-}