@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
26 lines (24 loc) • 1.02 kB
JavaScript
import stringify from 'safe-stable-stringify';
import { InternalObjectProperty } from '../../constants';
import { Helper } from '../Helper';
export class GetCallableHelper extends Helper {
constructor(options = { bindThis: false }) {
super();
this.bindThis = options.bindThis || false;
this.overwriteThis = options.overwriteThis || false;
}
static getKey(options = { bindThis: false }) {
const bindThis = options.bindThis || false;
const overwriteThis = options.overwriteThis || false;
return stringify({ bindThis, overwriteThis });
}
emit(sb, node, optionsIn) {
const options = sb.pushValueOptions(optionsIn);
sb.emitPushInt(node, InternalObjectProperty.Call);
sb.emitHelper(node, options, sb.helpers.getInternalObjectProperty);
if (this.bindThis) {
sb.emitHelper(node, options, sb.helpers.bindFunctionThis({ overwrite: this.overwriteThis }));
}
}
}
//# sourceMappingURL=GetCallableHelper.js.map