UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

50 lines (48 loc) 7.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const constants_1 = require("../../constants"); const Helper_1 = require("../Helper"); class DeleteCacheStorageHelper extends Helper_1.Helper { constructor() { super(...arguments); this.needsGlobal = true; this.needsGlobalOut = true; } emitGlobal(sb, node, _options) { sb.emitPushInt(node, constants_1.GlobalProperty.DeleteCacheStorage); sb.emitOp(node, 'NEWMAP'); sb.emitOp(node, 'SETITEM'); } emitGlobalOut(sb, node, optionsIn) { const options = sb.pushValueOptions(optionsIn); sb.emitPushInt(node, constants_1.GlobalProperty.DeleteCacheStorage); sb.emitOp(node, 'PICKITEM'); sb.emitSysCall(node, 'Neo.Runtime.GetTrigger'); sb.emitPushInt(node, 0x10); sb.emitHelper(node, options, sb.helpers.if({ condition: () => { sb.emitOp(node, 'NUMEQUAL'); }, whenTrue: () => { sb.emitHelper(node, options, sb.helpers.mapForEach({ each: () => { sb.emitSysCall(node, 'Neo.Storage.GetContext'); sb.emitSysCall(node, 'Neo.Storage.Delete'); sb.emitOp(node, 'DROP'); }, })); }, whenFalse: () => { sb.emitOp(node, 'DROP'); }, })); } emit(sb, node, options) { if (!options.pushValue) { return; } sb.emitHelper(node, options, sb.helpers.getGlobalProperty({ property: constants_1.GlobalProperty.DeleteCacheStorage })); } } exports.DeleteCacheStorageHelper = DeleteCacheStorageHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRlbGV0ZUNhY2hlU3RvcmFnZUhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLCtDQUFpRDtBQUdqRCxzQ0FBbUM7QUFJbkMsTUFBYSx3QkFBeUIsU0FBUSxlQUFNO0lBQXBEOztRQUNrQixnQkFBVyxHQUFZLElBQUksQ0FBQztRQUM1QixtQkFBYyxHQUFHLElBQUksQ0FBQztJQStEeEMsQ0FBQztJQTdEUSxVQUFVLENBQUMsRUFBaUIsRUFBRSxJQUFhLEVBQUUsUUFBc0I7UUFFeEUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsMEJBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXhELEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRTFCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxhQUFhLENBQUMsRUFBaUIsRUFBRSxJQUFhLEVBQUUsU0FBdUI7UUFDNUUsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRy9DLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLDBCQUFjLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUV4RCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUU1QixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1FBRS9DLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNCLEVBQUUsQ0FBQyxVQUFVLENBQ1gsSUFBSSxFQUNKLE9BQU8sRUFDUCxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNaLFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBRWQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDOUIsQ0FBQztZQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBRWIsRUFBRSxDQUFDLFVBQVUsQ0FDWCxJQUFJLEVBQ0osT0FBTyxFQUNQLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO29CQUNwQixJQUFJLEVBQUUsR0FBRyxFQUFFO3dCQUVULEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLHdCQUF3QixDQUFDLENBQUM7d0JBRS9DLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLG9CQUFvQixDQUFDLENBQUM7d0JBRTNDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUMxQixDQUFDO2lCQUNGLENBQUMsQ0FDSCxDQUFDO1lBQ0osQ0FBQztZQUNELFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBRWQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDMUIsQ0FBQztTQUNGLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVNLElBQUksQ0FBQyxFQUFpQixFQUFFLElBQWEsRUFBRSxPQUFxQjtRQUNqRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUV0QixPQUFPO1NBQ1I7UUFFRCxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSwwQkFBYyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlHLENBQUM7Q0FDRjtBQWpFRCw0REFpRUMiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9oZWxwZXIvc3RvcmFnZS9EZWxldGVDYWNoZVN0b3JhZ2VIZWxwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBHbG9iYWxQcm9wZXJ0eSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vSGVscGVyJztcblxuLy8gSW5wdXQ6IFtdXG4vLyBPdXRwdXQ6IFt2YWx1ZV1cbmV4cG9ydCBjbGFzcyBEZWxldGVDYWNoZVN0b3JhZ2VIZWxwZXIgZXh0ZW5kcyBIZWxwZXIge1xuICBwdWJsaWMgcmVhZG9ubHkgbmVlZHNHbG9iYWw6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgcmVhZG9ubHkgbmVlZHNHbG9iYWxPdXQgPSB0cnVlO1xuXG4gIHB1YmxpYyBlbWl0R2xvYmFsKHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBfb3B0aW9uczogVmlzaXRPcHRpb25zKTogdm9pZCB7XG4gICAgLy8gW251bWJlciwgZ2xvYmFsT2JqZWN0XVxuICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIEdsb2JhbFByb3BlcnR5LkRlbGV0ZUNhY2hlU3RvcmFnZSk7XG4gICAgLy8gW21hcCwgbnVtYmVyLCBnbG9iYWxPYmplY3RdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdORVdNQVAnKTtcbiAgICAvLyBbXVxuICAgIHNiLmVtaXRPcChub2RlLCAnU0VUSVRFTScpO1xuICB9XG5cbiAgcHVibGljIGVtaXRHbG9iYWxPdXQoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLk5vZGUsIG9wdGlvbnNJbjogVmlzaXRPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHNiLnB1c2hWYWx1ZU9wdGlvbnMob3B0aW9uc0luKTtcblxuICAgIC8vIFtudW1iZXIsIGdsb2JhbE9iamVjdF1cbiAgICBzYi5lbWl0UHVzaEludChub2RlLCBHbG9iYWxQcm9wZXJ0eS5EZWxldGVDYWNoZVN0b3JhZ2UpO1xuICAgIC8vIFttYXBdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdQSUNLSVRFTScpO1xuICAgIC8vIFtudW1iZXIsIG1hcF1cbiAgICBzYi5lbWl0U3lzQ2FsbChub2RlLCAnTmVvLlJ1bnRpbWUuR2V0VHJpZ2dlcicpO1xuICAgIC8vIFtudW1iZXIsIG51bWJlciwgbWFwXVxuICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDB4MTApO1xuICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICBub2RlLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHNiLmhlbHBlcnMuaWYoe1xuICAgICAgICBjb25kaXRpb246ICgpID0+IHtcbiAgICAgICAgICAvLyBbYm9vbGVhbiwgbWFwXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnTlVNRVFVQUwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2hlblRydWU6ICgpID0+IHtcbiAgICAgICAgICAvLyBbXVxuICAgICAgICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIHNiLmhlbHBlcnMubWFwRm9yRWFjaCh7XG4gICAgICAgICAgICAgIGVhY2g6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBbY29udGV4dCwga2V5QnVmZmVyLCB2YWxCdWZmZXJdXG4gICAgICAgICAgICAgICAgc2IuZW1pdFN5c0NhbGwobm9kZSwgJ05lby5TdG9yYWdlLkdldENvbnRleHQnKTtcbiAgICAgICAgICAgICAgICAvLyBbdmFsQnVmZmVyXVxuICAgICAgICAgICAgICAgIHNiLmVtaXRTeXNDYWxsKG5vZGUsICdOZW8uU3RvcmFnZS5EZWxldGUnKTtcbiAgICAgICAgICAgICAgICAvLyBbXVxuICAgICAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2hlbkZhbHNlOiAoKSA9PiB7XG4gICAgICAgICAgLy8gW11cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZW1pdChzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogdHMuTm9kZSwgb3B0aW9uczogVmlzaXRPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCFvcHRpb25zLnB1c2hWYWx1ZSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gW21hcF1cbiAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMuZ2V0R2xvYmFsUHJvcGVydHkoeyBwcm9wZXJ0eTogR2xvYmFsUHJvcGVydHkuRGVsZXRlQ2FjaGVTdG9yYWdlIH0pKTtcbiAgfVxufVxuIl19