@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
33 lines (31 loc) • 4.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const StructuredStorageBaseHelper_1 = require("./StructuredStorageBaseHelper");
class ForEachValStructuredStorageHelper 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.forEachStructuredStorageBase({
type: this.type,
each: (innerOptions) => {
sb.emitHelper(node, sb.pushValueOptions(innerOptions), sb.helpers.if({
condition: () => {
sb.emitHelper(node, sb.pushValueOptions(innerOptions), sb.helpers.handleValValueStructuredStorage);
},
whenTrue: () => {
this.each(sb.noPushValueOptions(innerOptions));
},
whenFalse: () => {
sb.emitOp(node, 'DROP');
},
}));
},
}));
}
}
exports.ForEachValStructuredStorageHelper = ForEachValStructuredStorageHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZvckVhY2hWYWxTdHJ1Y3R1cmVkU3RvcmFnZUhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSwrRUFBZ0g7QUFRaEgsTUFBYSxpQ0FBa0MsU0FBUSx5REFBMkI7SUFHaEYsWUFBbUIsRUFBMkQ7WUFBM0QsRUFBRSxJQUFJLE9BQXFELEVBQW5ELG1DQUFPO1FBQ2hDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFTSxJQUFJLENBQUMsRUFBaUIsRUFBRSxJQUFhLEVBQUUsT0FBcUI7UUFFakUsRUFBRSxDQUFDLFVBQVUsQ0FDWCxJQUFJLEVBQ0osT0FBTyxFQUNQLEVBQUUsQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUM7WUFDdEMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBQ3JCLEVBQUUsQ0FBQyxVQUFVLENBQ1gsSUFBSSxFQUNKLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsRUFDakMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ1osU0FBUyxFQUFFLEdBQUcsRUFBRTt3QkFFZCxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO29CQUNyRyxDQUFDO29CQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7d0JBRWIsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztvQkFDakQsQ0FBQztvQkFDRCxTQUFTLEVBQUUsR0FBRyxFQUFFO3dCQUVkLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUMxQixDQUFDO2lCQUNGLENBQUMsQ0FDSCxDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBdENELDhFQXNDQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy9jb21waWxlL2hlbHBlci9zdG9yYWdlL0ZvckVhY2hWYWxTdHJ1Y3R1cmVkU3RvcmFnZUhlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBTdHJ1Y3R1cmVkU3RvcmFnZUJhc2VIZWxwZXIsIFN0cnVjdHVyZWRTdG9yYWdlQmFzZUhlbHBlck9wdGlvbnMgfSBmcm9tICcuL1N0cnVjdHVyZWRTdG9yYWdlQmFzZUhlbHBlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9yRWFjaFZhbFN0cnVjdHVyZWRTdG9yYWdlSGVscGVyT3B0aW9ucyBleHRlbmRzIFN0cnVjdHVyZWRTdG9yYWdlQmFzZUhlbHBlck9wdGlvbnMge1xuICByZWFkb25seSBlYWNoOiAob3B0aW9uczogVmlzaXRPcHRpb25zKSA9PiB2b2lkO1xufVxuXG4vLyBJbnB1dDogW3ZhbF1cbi8vIE91dHB1dDogW3ZhbF1cbmV4cG9ydCBjbGFzcyBGb3JFYWNoVmFsU3RydWN0dXJlZFN0b3JhZ2VIZWxwZXIgZXh0ZW5kcyBTdHJ1Y3R1cmVkU3RvcmFnZUJhc2VIZWxwZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGVhY2g6IChvcHRpb25zOiBWaXNpdE9wdGlvbnMpID0+IHZvaWQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHsgZWFjaCwgLi4ucmVzdCB9OiBGb3JFYWNoVmFsU3RydWN0dXJlZFN0b3JhZ2VIZWxwZXJPcHRpb25zKSB7XG4gICAgc3VwZXIocmVzdCk7XG4gICAgdGhpcy5lYWNoID0gZWFjaDtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvcHRpb25zOiBWaXNpdE9wdGlvbnMpOiB2b2lkIHtcbiAgICAvLyBbXVxuICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICBub2RlLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHNiLmhlbHBlcnMuZm9yRWFjaFN0cnVjdHVyZWRTdG9yYWdlQmFzZSh7XG4gICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgZWFjaDogKGlubmVyT3B0aW9ucykgPT4ge1xuICAgICAgICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgc2IucHVzaFZhbHVlT3B0aW9ucyhpbm5lck9wdGlvbnMpLFxuICAgICAgICAgICAgc2IuaGVscGVycy5pZih7XG4gICAgICAgICAgICAgIGNvbmRpdGlvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFtib29sZWFuLCB2YWxWYWxdXG4gICAgICAgICAgICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBzYi5wdXNoVmFsdWVPcHRpb25zKGlubmVyT3B0aW9ucyksIHNiLmhlbHBlcnMuaGFuZGxlVmFsVmFsdWVTdHJ1Y3R1cmVkU3RvcmFnZSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHdoZW5UcnVlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gW11cbiAgICAgICAgICAgICAgICB0aGlzLmVhY2goc2Iubm9QdXNoVmFsdWVPcHRpb25zKGlubmVyT3B0aW9ucykpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB3aGVuRmFsc2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBbXVxuICAgICAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==