@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
35 lines (33 loc) • 5.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const StructuredStorageBaseHelper_1 = require("./StructuredStorageBaseHelper");
class StructuredStorageReduceValHelper extends StructuredStorageBaseHelper_1.StructuredStorageBaseHelper {
constructor(_a) {
var { each } = _a, rest = tslib_1.__rest(_a, ["each"]);
super(rest);
this.each = each;
}
emit(sb, node, options) {
sb.emitHelper(node, options, sb.helpers.structuredStorageReduceBase({
type: this.type,
each: (innerOptions) => {
sb.emitOp(node, 'SWAP');
sb.emitHelper(node, innerOptions, sb.helpers.if({
condition: () => {
sb.emitHelper(node, innerOptions, sb.helpers.handleValValueStructuredStorage);
},
whenTrue: () => {
sb.emitOp(node, 'SWAP');
this.each(innerOptions);
},
whenFalse: () => {
sb.emitOp(node, 'DROP');
},
}));
},
}));
}
}
exports.StructuredStorageReduceValHelper = StructuredStorageReduceValHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlN0cnVjdHVyZWRTdG9yYWdlUmVkdWNlVmFsSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLCtFQUFnSDtBQVFoSCxNQUFhLGdDQUFpQyxTQUFRLHlEQUEyQjtJQUcvRSxZQUFtQixFQUEwRDtZQUExRCxFQUFFLElBQUksT0FBb0QsRUFBbEQsbUNBQU87UUFDaEMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1osSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVNLElBQUksQ0FBQyxFQUFpQixFQUFFLElBQWEsRUFBRSxPQUFxQjtRQUVqRSxFQUFFLENBQUMsVUFBVSxDQUNYLElBQUksRUFDSixPQUFPLEVBQ1AsRUFBRSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQztZQUNyQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixJQUFJLEVBQUUsQ0FBQyxZQUFZLEVBQUUsRUFBRTtnQkFFckIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxVQUFVLENBQ1gsSUFBSSxFQUNKLFlBQVksRUFDWixFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDWixTQUFTLEVBQUUsR0FBRyxFQUFFO3dCQUVkLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLCtCQUErQixDQUFDLENBQUM7b0JBQ2hGLENBQUM7b0JBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTt3QkFFYixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFFeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDMUIsQ0FBQztvQkFDRCxTQUFTLEVBQUUsR0FBRyxFQUFFO3dCQUVkLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUMxQixDQUFDO2lCQUNGLENBQUMsQ0FDSCxDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBM0NELDRFQTJDQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy9jb21waWxlL2hlbHBlci9zdG9yYWdlL1N0cnVjdHVyZWRTdG9yYWdlUmVkdWNlVmFsSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4uLy4uL3NiJztcbmltcG9ydCB7IFZpc2l0T3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IFN0cnVjdHVyZWRTdG9yYWdlQmFzZUhlbHBlciwgU3RydWN0dXJlZFN0b3JhZ2VCYXNlSGVscGVyT3B0aW9ucyB9IGZyb20gJy4vU3RydWN0dXJlZFN0b3JhZ2VCYXNlSGVscGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJ1Y3R1cmVkU3RvcmFnZVJlZHVjZVZhbEhlbHBlck9wdGlvbnMgZXh0ZW5kcyBTdHJ1Y3R1cmVkU3RvcmFnZUJhc2VIZWxwZXJPcHRpb25zIHtcbiAgcmVhZG9ubHkgZWFjaDogKG9wdGlvbnM6IFZpc2l0T3B0aW9ucykgPT4gdm9pZDtcbn1cblxuLy8gSW5wdXQ6IFthY2N1bSwgdmFsXVxuLy8gT3V0cHV0OiBbYWNjdW1dXG5leHBvcnQgY2xhc3MgU3RydWN0dXJlZFN0b3JhZ2VSZWR1Y2VWYWxIZWxwZXIgZXh0ZW5kcyBTdHJ1Y3R1cmVkU3RvcmFnZUJhc2VIZWxwZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGVhY2g6IChvcHRpb25zOiBWaXNpdE9wdGlvbnMpID0+IHZvaWQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHsgZWFjaCwgLi4ucmVzdCB9OiBTdHJ1Y3R1cmVkU3RvcmFnZVJlZHVjZVZhbEhlbHBlck9wdGlvbnMpIHtcbiAgICBzdXBlcihyZXN0KTtcbiAgICB0aGlzLmVhY2ggPSBlYWNoO1xuICB9XG5cbiAgcHVibGljIGVtaXQoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLk5vZGUsIG9wdGlvbnM6IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIC8vIFthY2N1bV1cbiAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgbm9kZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzYi5oZWxwZXJzLnN0cnVjdHVyZWRTdG9yYWdlUmVkdWNlQmFzZSh7XG4gICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgZWFjaDogKGlubmVyT3B0aW9ucykgPT4ge1xuICAgICAgICAgIC8vIFtpdGVyYXRvciwgYWNjdW1dXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdTV0FQJyk7XG4gICAgICAgICAgLy8gW2FjY3VtXVxuICAgICAgICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgaW5uZXJPcHRpb25zLFxuICAgICAgICAgICAgc2IuaGVscGVycy5pZih7XG4gICAgICAgICAgICAgIGNvbmRpdGlvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFtib29sZWFuLCB2YWxWYWwsIGFjY3VtXVxuICAgICAgICAgICAgICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgaW5uZXJPcHRpb25zLCBzYi5oZWxwZXJzLmhhbmRsZVZhbFZhbHVlU3RydWN0dXJlZFN0b3JhZ2UpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB3aGVuVHJ1ZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFthY2N1bSwgdmFsVmFsXVxuICAgICAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgICAgICAgICAgICAgIC8vIFthY2N1bV1cbiAgICAgICAgICAgICAgICB0aGlzLmVhY2goaW5uZXJPcHRpb25zKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgd2hlbkZhbHNlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gW2FjY3VtXVxuICAgICAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==