UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

27 lines (25 loc) 4.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const KeyStructuredStorageBaseHelper_1 = require("./KeyStructuredStorageBaseHelper"); class GetStructuredStorageHelper extends KeyStructuredStorageBaseHelper_1.KeyStructuredStorageBaseHelper { emit(sb, node, optionsIn) { const options = sb.pushValueOptions(optionsIn); sb.emitHelper(node, options, sb.helpers.getKeyStructuredStorage({ type: this.type, keyType: this.keyType, knownKeyType: this.knownKeyType })); sb.emitHelper(node, options, sb.helpers.getStorage); sb.emitHelper(node, options, sb.helpers.handleUndefinedStorage({ handleUndefined: () => { sb.emitHelper(node, options, sb.helpers.wrapUndefined); }, handleDefined: () => { sb.emitSysCall(node, 'Neo.Runtime.Deserialize'); sb.emitPushInt(node, 1); sb.emitOp(node, 'PICKITEM'); }, })); if (!optionsIn.pushValue) { sb.emitOp(node, 'DROP'); } } } exports.GetStructuredStorageHelper = GetStructuredStorageHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkdldFN0cnVjdHVyZWRTdG9yYWdlSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EscUZBQWtGO0FBSWxGLE1BQWEsMEJBQTJCLFNBQVEsK0RBQThCO0lBQ3JFLElBQUksQ0FBQyxFQUFpQixFQUFFLElBQWEsRUFBRSxTQUF1QjtRQUNuRSxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0MsRUFBRSxDQUFDLFVBQVUsQ0FDWCxJQUFJLEVBQ0osT0FBTyxFQUNQLEVBQUUsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQ2hILENBQUM7UUFFRixFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVwRCxFQUFFLENBQUMsVUFBVSxDQUNYLElBQUksRUFDSixPQUFPLEVBQ1AsRUFBRSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztZQUNoQyxlQUFlLEVBQUUsR0FBRyxFQUFFO2dCQUNwQixFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6RCxDQUFDO1lBQ0QsYUFBYSxFQUFFLEdBQUcsRUFBRTtnQkFFbEIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUseUJBQXlCLENBQUMsQ0FBQztnQkFFaEQsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzlCLENBQUM7U0FDRixDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1lBQ3hCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztDQUNGO0FBbENELGdFQWtDQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy9jb21waWxlL2hlbHBlci9zdG9yYWdlL0dldFN0cnVjdHVyZWRTdG9yYWdlSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4uLy4uL3NiJztcbmltcG9ydCB7IFZpc2l0T3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEtleVN0cnVjdHVyZWRTdG9yYWdlQmFzZUhlbHBlciB9IGZyb20gJy4vS2V5U3RydWN0dXJlZFN0b3JhZ2VCYXNlSGVscGVyJztcblxuLy8gSW5wdXQ6IFtrZXlWYWwsIHZhbF1cbi8vIE91dHB1dDogW3ZhbF1cbmV4cG9ydCBjbGFzcyBHZXRTdHJ1Y3R1cmVkU3RvcmFnZUhlbHBlciBleHRlbmRzIEtleVN0cnVjdHVyZWRTdG9yYWdlQmFzZUhlbHBlciB7XG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvcHRpb25zSW46IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBzYi5wdXNoVmFsdWVPcHRpb25zKG9wdGlvbnNJbik7XG4gICAgLy8gW2J1ZmZlcl1cbiAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgbm9kZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzYi5oZWxwZXJzLmdldEtleVN0cnVjdHVyZWRTdG9yYWdlKHsgdHlwZTogdGhpcy50eXBlLCBrZXlUeXBlOiB0aGlzLmtleVR5cGUsIGtub3duS2V5VHlwZTogdGhpcy5rbm93bktleVR5cGUgfSksXG4gICAgKTtcbiAgICAvLyBbdmFsdWVdXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLmdldFN0b3JhZ2UpO1xuICAgIC8vIFt2YWxdXG4gICAgc2IuZW1pdEhlbHBlcihcbiAgICAgIG5vZGUsXG4gICAgICBvcHRpb25zLFxuICAgICAgc2IuaGVscGVycy5oYW5kbGVVbmRlZmluZWRTdG9yYWdlKHtcbiAgICAgICAgaGFuZGxlVW5kZWZpbmVkOiAoKSA9PiB7XG4gICAgICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLndyYXBVbmRlZmluZWQpO1xuICAgICAgICB9LFxuICAgICAgICBoYW5kbGVEZWZpbmVkOiAoKSA9PiB7XG4gICAgICAgICAgLy8gW2Fycl1cbiAgICAgICAgICBzYi5lbWl0U3lzQ2FsbChub2RlLCAnTmVvLlJ1bnRpbWUuRGVzZXJpYWxpemUnKTtcbiAgICAgICAgICAvLyBbMSwgYXJyXVxuICAgICAgICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDEpO1xuICAgICAgICAgIC8vIFt2YWxdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdQSUNLSVRFTScpO1xuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGlmICghb3B0aW9uc0luLnB1c2hWYWx1ZSkge1xuICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgfVxuICB9XG59XG4iXX0=