File size: 6,383 Bytes
be5030f
1
{"version":3,"sources":["visitor/bytewidth.ts"],"names":[],"mappings":"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","file":"bytewidth.js","sourcesContent":["/* istanbul ignore file */\n\n// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements.  See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership.  The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License.  You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied.  See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from '../data';\nimport { Visitor } from '../visitor';\nimport { VectorType } from '../interfaces';\nimport { Type, TimeUnit } from '../enum';\nimport { Schema, Field } from '../schema';\nimport {\n    DataType, Dictionary,\n    Float, Int, Date_, Interval, Time, Timestamp,\n    Bool, Null, Utf8, Binary, Decimal, FixedSizeBinary,\n    List, FixedSizeList, Map_, Struct, Union,\n} from '../type';\n\n/** @ignore */ const sum = (x: number, y: number) => x + y;\n/** @ignore */ const variableWidthColumnErrorMessage = (type: DataType) => `Cannot compute the byte width of variable-width column ${type}`;\n\n/** @ignore */\nexport interface ByteWidthVisitor extends Visitor {\n    visit<T extends DataType>(node: T): number;\n    visitMany<T extends DataType>(nodes: T[]): number[];\n    getVisitFn<T extends Type>    (node: T): (type: DataType<T>) => number;\n    getVisitFn<T extends DataType>(node: VectorType<T> | Data<T> | T): (type: T) => number;\n}\n\n/** @ignore */\nexport class ByteWidthVisitor extends Visitor {\n    public visitNull            (____: Null            ) { return 0; }\n    public visitInt             (type: Int             ) { return type.bitWidth / 8; }\n    public visitFloat           (type: Float           ) { return type.ArrayType.BYTES_PER_ELEMENT; }\n    public visitBinary          (type: Binary          ) { throw new Error(variableWidthColumnErrorMessage(type)); }\n    public visitUtf8            (type: Utf8            ) { throw new Error(variableWidthColumnErrorMessage(type)); }\n    public visitBool            (____: Bool            ) { return 1 / 8; }\n    public visitDecimal         (____: Decimal         ) { return 16; }\n    public visitDate            (type: Date_           ) { return (type.unit + 1) * 4; }\n    public visitTime            (type: Time            ) { return type.bitWidth / 8; }\n    public visitTimestamp       (type: Timestamp       ) { return type.unit === TimeUnit.SECOND ? 4 : 8; }\n    public visitInterval        (type: Interval        ) { return (type.unit + 1) * 4; }\n    public visitList            (type: List            ) { throw new Error(variableWidthColumnErrorMessage(type)); }\n    public visitStruct          (type: Struct          ) { return this.visitFields(type.children).reduce(sum, 0); }\n    public visitUnion           (type: Union           ) { return this.visitFields(type.children).reduce(sum, 0); }\n    public visitFixedSizeBinary (type: FixedSizeBinary ) { return type.byteWidth; }\n    public visitFixedSizeList   (type: FixedSizeList   ) { return type.listSize * this.visitFields(type.children).reduce(sum, 0); }\n    public visitMap             (type: Map_            ) { return this.visitFields(type.children).reduce(sum, 0); }\n    public visitDictionary      (type: Dictionary      ) { return this.visit(type.indices); }\n    public visitFields          (fields: Field[]       ) { return (fields || []).map((field) => this.visit(field.type)); }\n    public visitSchema          (schema: Schema        ) { return this.visitFields(schema.fields).reduce(sum, 0); }\n}\n\n/** @ignore */\nexport const instance = new ByteWidthVisitor();\n"]}