UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

33 lines (31 loc) 5.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ts_utils_1 = require("@neo-one/ts-utils"); const BuiltinInstanceMemberCall_1 = require("../../BuiltinInstanceMemberCall"); class AccountGetBalance extends BuiltinInstanceMemberCall_1.BuiltinInstanceMemberCall { canCall(_sb, _func, node) { return ts_utils_1.tsUtils.argumented.getArguments(node).length === 1; } emitCall(sb, func, node, optionsIn, visited) { const options = sb.pushValueOptions(optionsIn); if (!visited) { sb.visit(ts_utils_1.tsUtils.expression.getExpression(func), options); } if (ts_utils_1.tsUtils.argumented.getArguments(node).length < 1) { return; } sb.emitHelper(node, options, sb.helpers.unwrapBuffer); sb.visit(ts_utils_1.tsUtils.argumented.getArguments(node)[0], options); sb.emitHelper(ts_utils_1.tsUtils.argumented.getArguments(node)[0], options, sb.helpers.unwrapBuffer); sb.emitOp(node, 'SWAP'); sb.emitSysCall(node, 'Neo.Account.GetBalance'); if (optionsIn.pushValue) { sb.emitHelper(node, options, sb.helpers.wrapNumber); } else { sb.emitOp(node, 'DROP'); } } } exports.AccountGetBalance = AccountGetBalance; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdldEJhbGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxnREFBNEM7QUFJNUMsK0VBQTRFO0FBSTVFLE1BQWEsaUJBQWtCLFNBQVEscURBQXlCO0lBQ3ZELE9BQU8sQ0FBQyxHQUFrQixFQUFFLEtBQStCLEVBQUUsSUFBdUI7UUFDekYsT0FBTyxrQkFBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU0sUUFBUSxDQUNiLEVBQWlCLEVBQ2pCLElBQThCLEVBQzlCLElBQXVCLEVBQ3ZCLFNBQXVCLEVBQ3ZCLE9BQWdCO1FBRWhCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBRVosRUFBRSxDQUFDLEtBQUssQ0FBQyxrQkFBTyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDM0Q7UUFFRCxJQUFJLGtCQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBRXBELE9BQU87U0FDUjtRQUdELEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXRELEVBQUUsQ0FBQyxLQUFLLENBQUMsa0JBQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTVELEVBQUUsQ0FBQyxVQUFVLENBQUMsa0JBQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTFGLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXhCLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLHdCQUF3QixDQUFDLENBQUM7UUFDL0MsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFO1lBRXZCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3JEO2FBQU07WUFFTCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN6QjtJQUNILENBQUM7Q0FDRjtBQXpDRCw4Q0F5Q0MiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9idWlsdGlucy9jb250cmFjdC9hY2NvdW50L2dldEJhbGFuY2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0c1V0aWxzIH0gZnJvbSAnQG5lby1vbmUvdHMtdXRpbHMnO1xuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NiJztcbmltcG9ydCB7IFZpc2l0T3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEJ1aWx0aW5JbnN0YW5jZU1lbWJlckNhbGwgfSBmcm9tICcuLi8uLi9CdWlsdGluSW5zdGFuY2VNZW1iZXJDYWxsJztcbmltcG9ydCB7IENhbGxNZW1iZXJMaWtlRXhwcmVzc2lvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIGV4cG9ydC1uYW1lXG5leHBvcnQgY2xhc3MgQWNjb3VudEdldEJhbGFuY2UgZXh0ZW5kcyBCdWlsdGluSW5zdGFuY2VNZW1iZXJDYWxsIHtcbiAgcHVibGljIGNhbkNhbGwoX3NiOiBTY3JpcHRCdWlsZGVyLCBfZnVuYzogQ2FsbE1lbWJlckxpa2VFeHByZXNzaW9uLCBub2RlOiB0cy5DYWxsRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0c1V0aWxzLmFyZ3VtZW50ZWQuZ2V0QXJndW1lbnRzKG5vZGUpLmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0Q2FsbChcbiAgICBzYjogU2NyaXB0QnVpbGRlcixcbiAgICBmdW5jOiBDYWxsTWVtYmVyTGlrZUV4cHJlc3Npb24sXG4gICAgbm9kZTogdHMuQ2FsbEV4cHJlc3Npb24sXG4gICAgb3B0aW9uc0luOiBWaXNpdE9wdGlvbnMsXG4gICAgdmlzaXRlZDogYm9vbGVhbixcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHNiLnB1c2hWYWx1ZU9wdGlvbnMob3B0aW9uc0luKTtcbiAgICBpZiAoIXZpc2l0ZWQpIHtcbiAgICAgIC8vIFthcnJheVZhbF1cbiAgICAgIHNiLnZpc2l0KHRzVXRpbHMuZXhwcmVzc2lvbi5nZXRFeHByZXNzaW9uKGZ1bmMpLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBpZiAodHNVdGlscy5hcmd1bWVudGVkLmdldEFyZ3VtZW50cyhub2RlKS5sZW5ndGggPCAxKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFthY2NvdW50XVxuICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy51bndyYXBCdWZmZXIpO1xuICAgIC8vIFtidWZmZXJWYWwsIGFjY291bnRdXG4gICAgc2IudmlzaXQodHNVdGlscy5hcmd1bWVudGVkLmdldEFyZ3VtZW50cyhub2RlKVswXSwgb3B0aW9ucyk7XG4gICAgLy8gW2J1ZmZlciwgYWNjb3VudF1cbiAgICBzYi5lbWl0SGVscGVyKHRzVXRpbHMuYXJndW1lbnRlZC5nZXRBcmd1bWVudHMobm9kZSlbMF0sIG9wdGlvbnMsIHNiLmhlbHBlcnMudW53cmFwQnVmZmVyKTtcbiAgICAvLyBbYWNjb3VudCwgYnVmZmVyXVxuICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgIC8vIFtudW1iZXJdXG4gICAgc2IuZW1pdFN5c0NhbGwobm9kZSwgJ05lby5BY2NvdW50LkdldEJhbGFuY2UnKTtcbiAgICBpZiAob3B0aW9uc0luLnB1c2hWYWx1ZSkge1xuICAgICAgLy8gW2Jvb2xlYW5WYWxdXG4gICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMud3JhcE51bWJlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFtdXG4gICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==