@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
28 lines (26 loc) • 4.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Helper_1 = require("../Helper");
class MapMapHelper extends Helper_1.Helper {
constructor(options) {
super();
this.map = options.map;
}
emit(sb, node, options) {
sb.emitSysCall(node, 'Neo.Iterator.Create');
sb.emitOp(node, 'NEWMAP');
sb.emitHelper(node, options, sb.helpers.rawIteratorReduce({
each: (innerOptions) => {
sb.emitPushInt(node, 3);
sb.emitOp(node, 'XTUCK');
sb.emitOp(node, 'ROT');
sb.emitOp(node, 'ROT');
this.map(innerOptions);
sb.emitOp(node, 'SWAP');
sb.emitOp(node, 'SETITEM');
},
}));
}
}
exports.MapMapHelper = MapMapHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hcE1hcEhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLHNDQUFtQztBQVFuQyxNQUFhLFlBQWEsU0FBUSxlQUFNO0lBR3RDLFlBQW1CLE9BQTRCO1FBQzdDLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxJQUFJLENBQUMsRUFBaUIsRUFBRSxJQUFhLEVBQUUsT0FBcUI7UUFFakUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUU1QyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUUxQixFQUFFLENBQUMsVUFBVSxDQUNYLElBQUksRUFDSixPQUFPLEVBQ1AsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztZQUMzQixJQUFJLEVBQUUsQ0FBQyxZQUFZLEVBQUUsRUFBRTtnQkFFckIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUV6QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFdkIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBR3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBRXZCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztZQUM3QixDQUFDO1NBQ0YsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF0Q0Qsb0NBc0NDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL21hcC9NYXBNYXBIZWxwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vSGVscGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBNYXBNYXBIZWxwZXJPcHRpb25zIHtcbiAgcmVhZG9ubHkgbWFwOiAob3B0aW9uczogVmlzaXRPcHRpb25zKSA9PiB2b2lkO1xufVxuXG4vLyBJbnB1dDogW21hcF1cbi8vIE91dHB1dDogW21hcF1cbmV4cG9ydCBjbGFzcyBNYXBNYXBIZWxwZXIgZXh0ZW5kcyBIZWxwZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IG1hcDogKG9wdGlvbnM6IFZpc2l0T3B0aW9ucykgPT4gdm9pZDtcblxuICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogTWFwTWFwSGVscGVyT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5tYXAgPSBvcHRpb25zLm1hcDtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvcHRpb25zOiBWaXNpdE9wdGlvbnMpOiB2b2lkIHtcbiAgICAvLyBbaXRlcmF0b3JdXG4gICAgc2IuZW1pdFN5c0NhbGwobm9kZSwgJ05lby5JdGVyYXRvci5DcmVhdGUnKTtcbiAgICAvLyBbYWNjdW0sIGl0ZXJhdG9yXVxuICAgIHNiLmVtaXRPcChub2RlLCAnTkVXTUFQJyk7XG4gICAgLy8gW2FjY3VtXVxuICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICBub2RlLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHNiLmhlbHBlcnMucmF3SXRlcmF0b3JSZWR1Y2Uoe1xuICAgICAgICBlYWNoOiAoaW5uZXJPcHRpb25zKSA9PiB7XG4gICAgICAgICAgLy8gWzMsIGFjY3VtLCBrZXksIHZhbF1cbiAgICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCAzKTtcbiAgICAgICAgICAvLyBbYWNjdW0sIGtleSwgdmFsLCBhY2N1bV1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1hUVUNLJyk7XG4gICAgICAgICAgLy8gW3ZhbCwgYWNjdW0sIGtleSwgYWNjdW1dXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdST1QnKTtcbiAgICAgICAgICAvLyBba2V5LCB2YWwsIGFjY3VtLCBhY2N1bV1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1JPVCcpO1xuICAgICAgICAgIC8vIFtrZXksIHZhbCwgYWNjdW0sIGFjY3VtXVxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1tYXAtd2l0aG91dC11c2FnZVxuICAgICAgICAgIHRoaXMubWFwKGlubmVyT3B0aW9ucyk7XG4gICAgICAgICAgLy8gW3ZhbCwga2V5LCBhY2N1bSwgYWNjdW1dXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdTV0FQJyk7XG4gICAgICAgICAgLy8gW2FjY3VtXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU0VUSVRFTScpO1xuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuIl19