Spaces:
Runtime error
Runtime error
| ; | |
| /* istanbul ignore file */ | |
| Object.defineProperty(exports, "__esModule", { value: true }); | |
| exports.instance = exports.GetByteLengthVisitor = void 0; | |
| const visitor_js_1 = require("../visitor.js"); | |
| const enum_js_1 = require("../enum.js"); | |
| /** @ignore */ const sum = (x, y) => x + y; | |
| /** @ignore */ | |
| class GetByteLengthVisitor extends visitor_js_1.Visitor { | |
| visitNull(____, _) { | |
| return 0; | |
| } | |
| visitInt(data, _) { | |
| return data.type.bitWidth / 8; | |
| } | |
| visitFloat(data, _) { | |
| return data.type.ArrayType.BYTES_PER_ELEMENT; | |
| } | |
| visitBool(____, _) { | |
| return 1 / 8; | |
| } | |
| visitDecimal(data, _) { | |
| return data.type.bitWidth / 8; | |
| } | |
| visitDate(data, _) { | |
| return (data.type.unit + 1) * 4; | |
| } | |
| visitTime(data, _) { | |
| return data.type.bitWidth / 8; | |
| } | |
| visitTimestamp(data, _) { | |
| return data.type.unit === enum_js_1.TimeUnit.SECOND ? 4 : 8; | |
| } | |
| visitInterval(data, _) { | |
| return (data.type.unit + 1) * 4; | |
| } | |
| visitStruct(data, i) { | |
| return data.children.reduce((total, child) => total + exports.instance.visit(child, i), 0); | |
| } | |
| visitFixedSizeBinary(data, _) { | |
| return data.type.byteWidth; | |
| } | |
| visitMap(data, i) { | |
| // 4 + 4 for the indices | |
| return 8 + data.children.reduce((total, child) => total + exports.instance.visit(child, i), 0); | |
| } | |
| visitDictionary(data, i) { | |
| var _a; | |
| return (data.type.indices.bitWidth / 8) + (((_a = data.dictionary) === null || _a === void 0 ? void 0 : _a.getByteLength(data.values[i])) || 0); | |
| } | |
| } | |
| exports.GetByteLengthVisitor = GetByteLengthVisitor; | |
| /** @ignore */ | |
| const getUtf8ByteLength = ({ valueOffsets }, index) => { | |
| // 4 + 4 for the indices, `end - start` for the data bytes | |
| return 8 + (valueOffsets[index + 1] - valueOffsets[index]); | |
| }; | |
| /** @ignore */ | |
| const getBinaryByteLength = ({ valueOffsets }, index) => { | |
| // 4 + 4 for the indices, `end - start` for the data bytes | |
| return 8 + (valueOffsets[index + 1] - valueOffsets[index]); | |
| }; | |
| /** @ignore */ | |
| const getListByteLength = ({ valueOffsets, stride, children }, index) => { | |
| const child = children[0]; | |
| const { [index * stride]: start } = valueOffsets; | |
| const { [index * stride + 1]: end } = valueOffsets; | |
| const visit = exports.instance.getVisitFn(child.type); | |
| const slice = child.slice(start, end - start); | |
| let size = 8; // 4 + 4 for the indices | |
| for (let idx = -1, len = end - start; ++idx < len;) { | |
| size += visit(slice, idx); | |
| } | |
| return size; | |
| }; | |
| /** @ignore */ | |
| const getFixedSizeListByteLength = ({ stride, children }, index) => { | |
| const child = children[0]; | |
| const slice = child.slice(index * stride, stride); | |
| const visit = exports.instance.getVisitFn(child.type); | |
| let size = 0; | |
| for (let idx = -1, len = slice.length; ++idx < len;) { | |
| size += visit(slice, idx); | |
| } | |
| return size; | |
| }; | |
| /* istanbul ignore next */ | |
| /** @ignore */ | |
| const getUnionByteLength = (data, index) => { | |
| return data.type.mode === enum_js_1.UnionMode.Dense ? | |
| getDenseUnionByteLength(data, index) : | |
| getSparseUnionByteLength(data, index); | |
| }; | |
| /** @ignore */ | |
| const getDenseUnionByteLength = ({ type, children, typeIds, valueOffsets }, index) => { | |
| const childIndex = type.typeIdToChildIndex[typeIds[index]]; | |
| // 4 for the typeId, 4 for the valueOffsets, then the child at the offset | |
| return 8 + exports.instance.visit(children[childIndex], valueOffsets[index]); | |
| }; | |
| /** @ignore */ | |
| const getSparseUnionByteLength = ({ children }, index) => { | |
| // 4 for the typeId, then once each for the children at this index | |
| return 4 + exports.instance.visitMany(children, children.map(() => index)).reduce(sum, 0); | |
| }; | |
| GetByteLengthVisitor.prototype.visitUtf8 = getUtf8ByteLength; | |
| GetByteLengthVisitor.prototype.visitBinary = getBinaryByteLength; | |
| GetByteLengthVisitor.prototype.visitList = getListByteLength; | |
| GetByteLengthVisitor.prototype.visitFixedSizeList = getFixedSizeListByteLength; | |
| GetByteLengthVisitor.prototype.visitUnion = getUnionByteLength; | |
| GetByteLengthVisitor.prototype.visitDenseUnion = getDenseUnionByteLength; | |
| GetByteLengthVisitor.prototype.visitSparseUnion = getSparseUnionByteLength; | |
| /** @ignore */ | |
| exports.instance = new GetByteLengthVisitor(); | |
| //# sourceMappingURL=bytelength.js.map | |