@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
28 lines (26 loc) • 4.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("../../constants");
const KeyStructuredStorageBaseHelper_1 = require("./KeyStructuredStorageBaseHelper");
class GetKeyStructuredStorageHelper extends KeyStructuredStorageBaseHelper_1.KeyStructuredStorageBaseHelper {
emit(sb, node, optionsIn) {
const options = sb.pushValueOptions(optionsIn);
sb.emitHelper(node, options, sb.helpers.unwrapKeyStructuredStorage({
type: this.keyType,
knownType: this.knownKeyType,
}));
sb.emitOp(node, 'SWAP');
sb.emitHelper(node, options, sb.helpers.unwrapVal({ type: this.type }));
sb.emitPushInt(node, constants_1.StructuredStorageSlots.prefix);
sb.emitOp(node, 'PICKITEM');
sb.emitHelper(node, options, sb.helpers.arrReduce({
each: () => {
sb.emitOp(node, 'SWAP');
sb.emitSysCall(node, 'Neo.Runtime.Serialize');
sb.emitOp(node, 'CAT');
},
}));
}
}
exports.GetKeyStructuredStorageHelper = GetKeyStructuredStorageHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkdldEtleVN0cnVjdHVyZWRTdG9yYWdlSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsK0NBQXlEO0FBR3pELHFGQUFrRjtBQUlsRixNQUFhLDZCQUE4QixTQUFRLCtEQUE4QjtJQUN4RSxJQUFJLENBQUMsRUFBaUIsRUFBRSxJQUFhLEVBQUUsU0FBdUI7UUFDbkUsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRy9DLEVBQUUsQ0FBQyxVQUFVLENBQ1gsSUFBSSxFQUNKLE9BQU8sRUFDUCxFQUFFLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDO1lBQ3BDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTztZQUNsQixTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDN0IsQ0FBQyxDQUNILENBQUM7UUFFRixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV4QixFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV4RSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxrQ0FBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwRCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUU1QixFQUFFLENBQUMsVUFBVSxDQUNYLElBQUksRUFDSixPQUFPLEVBQ1AsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7WUFDbkIsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFFVCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztnQkFFOUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekIsQ0FBQztTQUNGLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBckNELHNFQXFDQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy9jb21waWxlL2hlbHBlci9zdG9yYWdlL0dldEtleVN0cnVjdHVyZWRTdG9yYWdlSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgU3RydWN0dXJlZFN0b3JhZ2VTbG90cyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgS2V5U3RydWN0dXJlZFN0b3JhZ2VCYXNlSGVscGVyIH0gZnJvbSAnLi9LZXlTdHJ1Y3R1cmVkU3RvcmFnZUJhc2VIZWxwZXInO1xuXG4vLyBJbnB1dDogW3ZhbEtleSwgdmFsXVxuLy8gT3V0cHV0OiBbYnVmZmVyS2V5XVxuZXhwb3J0IGNsYXNzIEdldEtleVN0cnVjdHVyZWRTdG9yYWdlSGVscGVyIGV4dGVuZHMgS2V5U3RydWN0dXJlZFN0b3JhZ2VCYXNlSGVscGVyIHtcbiAgcHVibGljIGVtaXQoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLk5vZGUsIG9wdGlvbnNJbjogVmlzaXRPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHNiLnB1c2hWYWx1ZU9wdGlvbnMob3B0aW9uc0luKTtcblxuICAgIC8vIFt2YWxLZXlBcnIsIHZhbF1cbiAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgbm9kZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzYi5oZWxwZXJzLnVud3JhcEtleVN0cnVjdHVyZWRTdG9yYWdlKHtcbiAgICAgICAgdHlwZTogdGhpcy5rZXlUeXBlLFxuICAgICAgICBrbm93blR5cGU6IHRoaXMua25vd25LZXlUeXBlLFxuICAgICAgfSksXG4gICAgKTtcbiAgICAvLyBbdmFsLCB2YWxLZXlBcnJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdTV0FQJyk7XG4gICAgLy8gW3N0cnVjdCwgdmFsS2V5QXJyXVxuICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy51bndyYXBWYWwoeyB0eXBlOiB0aGlzLnR5cGUgfSkpO1xuICAgIC8vIFtudW1iZXIsIHN0cnVjdCwgdmFsS2V5QXJyXVxuICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIFN0cnVjdHVyZWRTdG9yYWdlU2xvdHMucHJlZml4KTtcbiAgICAvLyBbcHJlZml4LCB2YWxLZXlBcnJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdQSUNLSVRFTScpO1xuICAgIC8vIFtwcmVmaXhdXG4gICAgc2IuZW1pdEhlbHBlcihcbiAgICAgIG5vZGUsXG4gICAgICBvcHRpb25zLFxuICAgICAgc2IuaGVscGVycy5hcnJSZWR1Y2Uoe1xuICAgICAgICBlYWNoOiAoKSA9PiB7XG4gICAgICAgICAgLy8gW3ZhbCwgcHJlZml4XVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgICAgICAgIC8vIFtidWZmZXIsIHByZWZpeF1cbiAgICAgICAgICBzYi5lbWl0U3lzQ2FsbChub2RlLCAnTmVvLlJ1bnRpbWUuU2VyaWFsaXplJyk7XG4gICAgICAgICAgLy8gW3ByZWZpeF1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0NBVCcpO1xuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuIl19