File size: 7,695 Bytes
be5030f
1
{"version":3,"sources":["vector/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["// 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 { Type } from '../enum';\nimport { DataType } from '../type';\nimport { Chunked } from './chunked';\nimport { clampRange } from '../util/vector';\nimport { VectorType as V } from '../interfaces';\nimport { AbstractVector, Vector, Clonable, Sliceable, Applicative } from '../vector';\n\n/** @ignore */\nexport interface BaseVector<T extends DataType = any> extends Clonable<V<T>>, Sliceable<V<T>>, Applicative<T, Chunked<T>> {\n    slice(begin?: number, end?: number): V<T>;\n    concat(...others: Vector<T>[]): Chunked<T>;\n    clone<R extends DataType = T>(data: Data<R>, children?: Vector<R>[]): V<R>;\n}\n\n/** @ignore */\nexport abstract class BaseVector<T extends DataType = any> extends AbstractVector<T>\n    implements Clonable<V<T>>, Sliceable<V<T>>, Applicative<T, Chunked<T>> {\n\n    protected _children?: Vector[];\n\n    constructor(data: Data<T>, children?: Vector[]) {\n        super();\n        this._children = children;\n        this.numChildren = data.childData.length;\n        this._bindDataAccessors(this.data = data);\n    }\n\n    public readonly data: Data<T>;\n    public readonly numChildren: number;\n\n    public get type() { return this.data.type; }\n    public get typeId() { return this.data.typeId; }\n    public get length() { return this.data.length; }\n    public get offset() { return this.data.offset; }\n    public get stride() { return this.data.stride; }\n    public get nullCount() { return this.data.nullCount; }\n    public get byteLength() { return this.data.byteLength; }\n    public get VectorName() { return `${Type[this.typeId]}Vector`; }\n\n    public get ArrayType(): T['ArrayType'] { return this.type.ArrayType; }\n\n    public get values() { return this.data.values; }\n    public get typeIds() { return this.data.typeIds; }\n    public get nullBitmap() { return this.data.nullBitmap; }\n    public get valueOffsets() { return this.data.valueOffsets; }\n\n    public get [Symbol.toStringTag]() { return `${this.VectorName}<${this.type[Symbol.toStringTag]}>`; }\n\n    public clone<R extends DataType = T>(data: Data<R>, children = this._children) {\n        return Vector.new<R>(data, children) as any;\n    }\n\n    public concat(...others: Vector<T>[]) {\n        return Chunked.concat<T>(this, ...others);\n    }\n\n    public slice(begin?: number, end?: number) {\n        // Adjust args similar to Array.prototype.slice. Normalize begin/end to\n        // clamp between 0 and length, and wrap around on negative indices, e.g.\n        // slice(-1, 5) or slice(5, -1)\n        return clampRange(this, begin, end, this._sliceInternal);\n    }\n\n    public isValid(index: number): boolean {\n        if (this.nullCount > 0) {\n            const idx = this.offset + index;\n            const val = this.nullBitmap[idx >> 3];\n            const mask = (val & (1 << (idx % 8)));\n            return mask !== 0;\n        }\n        return true;\n    }\n\n    public getChildAt<R extends DataType = any>(index: number): Vector<R> | null {\n        return index < 0 || index >= this.numChildren ? null : (\n            (this._children || (this._children = []))[index] ||\n            (this._children[index] = Vector.new<R>(this.data.childData[index] as Data<R>))\n        ) as Vector<R>;\n    }\n\n    public toJSON(): any { return [...this]; }\n\n    protected _sliceInternal(self: this, begin: number, end: number) {\n        return self.clone(self.data.slice(begin, end - begin), null!);\n    }\n\n    // @ts-ignore\n    protected _bindDataAccessors(data: Data<T>) {\n        // Implementation in src/vectors/index.ts due to circular dependency/packaging shenanigans\n    }\n}\n\n(BaseVector.prototype as any)[Symbol.isConcatSpreadable] = true;\n"]}