import * as vscode from 'vscode';
import {MLIRContext} from './mlirContext';
/**
* This class represents a base vscode command. It handles all of the necessary
* command registration and disposal boilerplate.
*/
export abstract class Command extends vscode.Disposable {
private disposable: vscode.Disposable;
protected context: MLIRContext;
constructor(command: string, context: MLIRContext) {
super(() => this.dispose());
this.disposable =
vscode.commands.registerCommand(command, this.execute, this);
this.context = context;
}
dispose() { this.disposable && this.disposable.dispose(); }
/**
* The function executed when this command is invoked.
*/
abstract execute(...args: any[]): any;
}