UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

37 lines (35 loc) 5.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Helper_1 = require("../../Helper"); class GetObjectPropertyHelperBase extends Helper_1.Helper { emit(sb, node, options) { sb.emitOp(node, 'OVER'); sb.emitOp(node, 'SWAP'); sb.emitHelper(node, options, sb.helpers.findObjectProperty({ accessor: () => { sb.emitPushInt(node, 0); sb.emitOp(node, 'PICKITEM'); sb.emitHelper(node, options, sb.helpers.invokeCall({ bindThis: true, noArgs: true })); }, dataExists: () => { sb.emitOp(node, 'NIP'); if (options.pushValue) { sb.emitPushInt(node, 0); sb.emitOp(node, 'PICKITEM'); } else { sb.emitOp(node, 'DROP'); } }, data: () => { sb.emitOp(node, 'DROP'); if (options.pushValue) { sb.emitHelper(node, options, sb.helpers.wrapUndefined); } }, getObject: this.getObject.bind(this), })); } } exports.GetObjectPropertyHelperBase = GetObjectPropertyHelperBase; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkdldE9iamVjdFByb3BlcnR5SGVscGVyQmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUlBLHlDQUFzQztBQUl0QyxNQUFzQiwyQkFBNEIsU0FBUSxlQUFNO0lBQ3ZELElBQUksQ0FBQyxFQUFpQixFQUFFLElBQWEsRUFBRSxPQUFxQjtRQUVqRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4QixFQUFFLENBQUMsVUFBVSxDQUNYLElBQUksRUFDSixPQUFPLEVBQ1AsRUFBRSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztZQUM1QixRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUViLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFFNUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hGLENBQUM7WUFDRCxVQUFVLEVBQUUsR0FBRyxFQUFFO2dCQUVmLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN2QixJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7b0JBRXJCLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztpQkFDN0I7cUJBQU07b0JBRUwsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQ3pCO1lBQ0gsQ0FBQztZQUNELElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBRVQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ3hCLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRTtvQkFFckIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ3hEO1lBQ0gsQ0FBQztZQUNELFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDckMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBR0Y7QUE3Q0Qsa0VBNkNDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL3R5cGVzL29iamVjdC9HZXRPYmplY3RQcm9wZXJ0eUhlbHBlckJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuLi8uLi9IZWxwZXInO1xuXG4vLyBJbnB1dDogW3N0cmluZ1Byb3AsIG9iamVjdFZhbF1cbi8vIE91dHB1dDogW3ZhbF1cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHZXRPYmplY3RQcm9wZXJ0eUhlbHBlckJhc2UgZXh0ZW5kcyBIZWxwZXIge1xuICBwdWJsaWMgZW1pdChzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogdHMuTm9kZSwgb3B0aW9uczogVmlzaXRPcHRpb25zKTogdm9pZCB7XG4gICAgLy8gW29iamVjdFZhbCwgc3RyaW5nUHJvcCwgb2JqZWN0VmFsXVxuICAgIHNiLmVtaXRPcChub2RlLCAnT1ZFUicpO1xuICAgIC8vIFtzdHJpbmdQcm9wLCBvYmplY3RWYWwsIG9iamVjdFZhbF1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1NXQVAnKTtcbiAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgbm9kZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzYi5oZWxwZXJzLmZpbmRPYmplY3RQcm9wZXJ0eSh7XG4gICAgICAgIGFjY2Vzc29yOiAoKSA9PiB7XG4gICAgICAgICAgLy8gWzAsIHByb3BWYWwsIG9iamVjdFZhbF1cbiAgICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCAwKTtcbiAgICAgICAgICAvLyBbZ2V0T2JqZWN0VmFsLCBvYmplY3RWYWxdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdQSUNLSVRFTScpO1xuICAgICAgICAgIC8vIFt2YWxdXG4gICAgICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLmludm9rZUNhbGwoeyBiaW5kVGhpczogdHJ1ZSwgbm9BcmdzOiB0cnVlIH0pKTtcbiAgICAgICAgfSxcbiAgICAgICAgZGF0YUV4aXN0czogKCkgPT4ge1xuICAgICAgICAgIC8vIFtwcm9wVmFsXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnTklQJyk7XG4gICAgICAgICAgaWYgKG9wdGlvbnMucHVzaFZhbHVlKSB7XG4gICAgICAgICAgICAvLyBbMCwgcHJvcFZhbF1cbiAgICAgICAgICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDApO1xuICAgICAgICAgICAgLy8gW3ZhbF1cbiAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnUElDS0lURU0nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gW11cbiAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF0YTogKCkgPT4ge1xuICAgICAgICAgIC8vIFtdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgICAgICAgaWYgKG9wdGlvbnMucHVzaFZhbHVlKSB7XG4gICAgICAgICAgICAvLyBbdmFsXVxuICAgICAgICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLndyYXBVbmRlZmluZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZ2V0T2JqZWN0OiB0aGlzLmdldE9iamVjdC5iaW5kKHRoaXMpLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRPYmplY3Qoc2I6IFNjcmlwdEJ1aWxkZXIpOiBIZWxwZXI7XG59XG4iXX0=