@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
29 lines (27 loc) • 4.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const StructuredStorageBaseHelper_1 = require("./StructuredStorageBaseHelper");
class CreateStructuredStorageHelper extends StructuredStorageBaseHelper_1.StructuredStorageBaseHelper {
constructor(_a) {
var { prefix } = _a, rest = tslib_1.__rest(_a, ["prefix"]);
super(rest);
this.prefix = prefix;
}
emit(sb, node, options) {
if (!options.pushValue) {
sb.emitOp(node, 'DROP');
return;
}
sb.emitPushInt(node, 0);
sb.emitOp(node, 'NEWARRAY');
sb.emitPushInt(node, 0);
sb.emitPushString(node, this.prefix);
sb.emitPushInt(node, 3);
sb.emitOp(node, 'PACK');
sb.emitOp(node, 'NEWSTRUCT');
sb.emitHelper(node, options, sb.helpers.wrapVal({ type: this.type }));
}
}
exports.CreateStructuredStorageHelper = CreateStructuredStorageHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNyZWF0ZVN0cnVjdHVyZWRTdG9yYWdlSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLCtFQUFnSDtBQVFoSCxNQUFhLDZCQUE4QixTQUFRLHlEQUEyQjtJQUc1RSxZQUFtQixFQUF5RDtZQUF6RCxFQUFFLE1BQU0sT0FBaUQsRUFBL0MscUNBQU87UUFDbEMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVNLElBQUksQ0FBQyxFQUFpQixFQUFFLElBQWEsRUFBRSxPQUFxQjtRQUNqRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUV0QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUd4QixPQUFPO1NBQ1I7UUFHRCxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUU1QixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV4QixFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFN0IsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztDQUNGO0FBakNELHNFQWlDQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy9jb21waWxlL2hlbHBlci9zdG9yYWdlL0NyZWF0ZVN0cnVjdHVyZWRTdG9yYWdlSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4uLy4uL3NiJztcbmltcG9ydCB7IFZpc2l0T3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IFN0cnVjdHVyZWRTdG9yYWdlQmFzZUhlbHBlciwgU3RydWN0dXJlZFN0b3JhZ2VCYXNlSGVscGVyT3B0aW9ucyB9IGZyb20gJy4vU3RydWN0dXJlZFN0b3JhZ2VCYXNlSGVscGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVTdHJ1Y3R1cmVkU3RvcmFnZUhlbHBlck9wdGlvbnMgZXh0ZW5kcyBTdHJ1Y3R1cmVkU3RvcmFnZUJhc2VIZWxwZXJPcHRpb25zIHtcbiAgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG59XG5cbi8vIElucHV0OiBbXVxuLy8gT3V0cHV0OiBbdmFsdWVdXG5leHBvcnQgY2xhc3MgQ3JlYXRlU3RydWN0dXJlZFN0b3JhZ2VIZWxwZXIgZXh0ZW5kcyBTdHJ1Y3R1cmVkU3RvcmFnZUJhc2VIZWxwZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHByZWZpeDogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih7IHByZWZpeCwgLi4ucmVzdCB9OiBDcmVhdGVTdHJ1Y3R1cmVkU3RvcmFnZUhlbHBlck9wdGlvbnMpIHtcbiAgICBzdXBlcihyZXN0KTtcbiAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvcHRpb25zOiBWaXNpdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIW9wdGlvbnMucHVzaFZhbHVlKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gWzBdXG4gICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMCk7XG4gICAgLy8gW2Fycl1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ05FV0FSUkFZJyk7XG4gICAgLy8gW3NpemUsIGFycl1cbiAgICBzYi5lbWl0UHVzaEludChub2RlLCAwKTtcbiAgICAvLyBbcHJlZml4LCBzaXplLCBhcnJdXG4gICAgc2IuZW1pdFB1c2hTdHJpbmcobm9kZSwgdGhpcy5wcmVmaXgpO1xuICAgIC8vIFszLCBwcmVmaXgsIHNpemUsIGFycl1cbiAgICBzYi5lbWl0UHVzaEludChub2RlLCAzKTtcbiAgICAvLyBbc3RydWN0XVxuICAgIHNiLmVtaXRPcChub2RlLCAnUEFDSycpO1xuICAgIHNiLmVtaXRPcChub2RlLCAnTkVXU1RSVUNUJyk7XG4gICAgLy8gW3ZhbF1cbiAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMud3JhcFZhbCh7IHR5cGU6IHRoaXMudHlwZSB9KSk7XG4gIH1cbn1cbiJdfQ==