@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
26 lines (24 loc) • 3.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const ts_utils_1 = require("@neo-one/ts-utils");
const BuiltinMemberCall_1 = require("../BuiltinMemberCall");
class BufferConcat extends BuiltinMemberCall_1.BuiltinMemberCall {
emitCall(sb, _func, node, optionsIn) {
const options = sb.pushValueOptions(optionsIn);
if (ts_utils_1.tsUtils.argumented.getArguments(node).length < 1) {
return;
}
const arg = ts_utils_1.tsUtils.argumented.getArguments(node)[0];
sb.visit(arg, options);
sb.emitHelper(arg, options, sb.helpers.unwrapArray);
sb.emitHelper(node, options, sb.helpers.concatBuffer);
if (optionsIn.pushValue) {
sb.emitHelper(node, options, sb.helpers.wrapBuffer);
}
else {
sb.emitOp(node, 'DROP');
}
}
}
exports.BufferConcat = BufferConcat;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbmNhdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGdEQUE0QztBQUk1Qyw0REFBeUQ7QUFJekQsTUFBYSxZQUFhLFNBQVEscUNBQWlCO0lBQzFDLFFBQVEsQ0FDYixFQUFpQixFQUNqQixLQUEyQixFQUMzQixJQUF1QixFQUN2QixTQUF1QjtRQUV2QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsSUFBSSxrQkFBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUVwRCxPQUFPO1NBQ1I7UUFFRCxNQUFNLEdBQUcsR0FBRyxrQkFBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFckQsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFdkIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFcEQsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdEQsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFO1lBRXZCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3JEO2FBQU07WUFFTCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN6QjtJQUNILENBQUM7Q0FDRjtBQTVCRCxvQ0E0QkMiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9idWlsdGlucy9idWZmZXIvY29uY2F0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHNVdGlscyB9IGZyb20gJ0BuZW8tb25lL3RzLXV0aWxzJztcbmltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBCdWlsdGluTWVtYmVyQ2FsbCB9IGZyb20gJy4uL0J1aWx0aW5NZW1iZXJDYWxsJztcbmltcG9ydCB7IE1lbWJlckxpa2VFeHByZXNzaW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgZXhwb3J0LW5hbWVcbmV4cG9ydCBjbGFzcyBCdWZmZXJDb25jYXQgZXh0ZW5kcyBCdWlsdGluTWVtYmVyQ2FsbCB7XG4gIHB1YmxpYyBlbWl0Q2FsbChcbiAgICBzYjogU2NyaXB0QnVpbGRlcixcbiAgICBfZnVuYzogTWVtYmVyTGlrZUV4cHJlc3Npb24sXG4gICAgbm9kZTogdHMuQ2FsbEV4cHJlc3Npb24sXG4gICAgb3B0aW9uc0luOiBWaXNpdE9wdGlvbnMsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBzYi5wdXNoVmFsdWVPcHRpb25zKG9wdGlvbnNJbik7XG4gICAgaWYgKHRzVXRpbHMuYXJndW1lbnRlZC5nZXRBcmd1bWVudHMobm9kZSkubGVuZ3RoIDwgMSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhcmcgPSB0c1V0aWxzLmFyZ3VtZW50ZWQuZ2V0QXJndW1lbnRzKG5vZGUpWzBdO1xuICAgIC8vIFthcnJheVZhbF1cbiAgICBzYi52aXNpdChhcmcsIG9wdGlvbnMpO1xuICAgIC8vIFthcnJdXG4gICAgc2IuZW1pdEhlbHBlcihhcmcsIG9wdGlvbnMsIHNiLmhlbHBlcnMudW53cmFwQXJyYXkpO1xuICAgIC8vIFtidWZmZXJdXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLmNvbmNhdEJ1ZmZlcik7XG4gICAgaWYgKG9wdGlvbnNJbi5wdXNoVmFsdWUpIHtcbiAgICAgIC8vIFtidWZmZXJWYWxdXG4gICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMud3JhcEJ1ZmZlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFtdXG4gICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==