{"version":3,"sources":["visitor/iterator.ts"],"names":[],"mappings":"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","file":"iterator.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 { Visitor } from '../visitor';\nimport { VectorType } from '../interfaces';\nimport { iterateBits } from '../util/bit';\nimport { instance as getVisitor } from './get';\nimport {\n DataType, Dictionary,\n Bool, Null, Utf8, Binary, Decimal, FixedSizeBinary, List, FixedSizeList, Map_, Struct,\n Float, Float16, Float32, Float64,\n Int, Uint8, Uint16, Uint32, Uint64, Int8, Int16, Int32, Int64,\n Date_, DateDay, DateMillisecond,\n Interval, IntervalDayTime, IntervalYearMonth,\n Time, TimeSecond, TimeMillisecond, TimeMicrosecond, TimeNanosecond,\n Timestamp, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond,\n Union, DenseUnion, SparseUnion,\n} from '../type';\n\n/** @ignore */\nexport interface IteratorVisitor extends Visitor {\n visit(node: T): IterableIterator;\n visitMany (nodes: T[]): IterableIterator[];\n getVisitFn(node: T): (vector: VectorType) => IterableIterator['TValue'] | null>;\n getVisitFn(node: VectorType | Data | T): (vector: VectorType) => IterableIterator['TValue'] | null>;\n visitNull (vector: VectorType): IterableIterator;\n visitBool (vector: VectorType): IterableIterator;\n visitInt (vector: VectorType): IterableIterator;\n visitInt8 (vector: VectorType): IterableIterator;\n visitInt16 (vector: VectorType): IterableIterator;\n visitInt32 (vector: VectorType): IterableIterator;\n visitInt64 (vector: VectorType): IterableIterator;\n visitUint8 (vector: VectorType): IterableIterator;\n visitUint16 (vector: VectorType): IterableIterator;\n visitUint32 (vector: VectorType): IterableIterator;\n visitUint64 (vector: VectorType): IterableIterator;\n visitFloat (vector: VectorType): IterableIterator;\n visitFloat16 (vector: VectorType): IterableIterator;\n visitFloat32 (vector: VectorType): IterableIterator;\n visitFloat64 (vector: VectorType): IterableIterator;\n visitUtf8 (vector: VectorType): IterableIterator;\n visitBinary (vector: VectorType): IterableIterator;\n visitFixedSizeBinary (vector: VectorType): IterableIterator;\n visitDate (vector: VectorType): IterableIterator;\n visitDateDay (vector: VectorType): IterableIterator;\n visitDateMillisecond (vector: VectorType): IterableIterator;\n visitTimestamp (vector: VectorType): IterableIterator;\n visitTimestampSecond (vector: VectorType): IterableIterator;\n visitTimestampMillisecond (vector: VectorType): IterableIterator;\n visitTimestampMicrosecond (vector: VectorType): IterableIterator;\n visitTimestampNanosecond (vector: VectorType): IterableIterator;\n visitTime (vector: VectorType): IterableIterator;\n visitTimeSecond (vector: VectorType): IterableIterator;\n visitTimeMillisecond (vector: VectorType): IterableIterator;\n visitTimeMicrosecond (vector: VectorType): IterableIterator;\n visitTimeNanosecond (vector: VectorType): IterableIterator;\n visitDecimal (vector: VectorType): IterableIterator;\n visitList (vector: VectorType): IterableIterator;\n visitStruct (vector: VectorType): IterableIterator;\n visitUnion (vector: VectorType): IterableIterator;\n visitDenseUnion (vector: VectorType): IterableIterator;\n visitSparseUnion (vector: VectorType): IterableIterator;\n visitDictionary (vector: VectorType): IterableIterator;\n visitInterval (vector: VectorType): IterableIterator;\n visitIntervalDayTime (vector: VectorType): IterableIterator;\n visitIntervalYearMonth (vector: VectorType): IterableIterator;\n visitFixedSizeList (vector: VectorType): IterableIterator;\n visitMap (vector: VectorType): IterableIterator;\n}\n\n/** @ignore */\nexport class IteratorVisitor extends Visitor {}\n\n/** @ignore */\nfunction nullableIterator(vector: VectorType): IterableIterator {\n const getFn = getVisitor.getVisitFn(vector);\n return iterateBits(\n vector.nullBitmap, vector.offset, vector.length, vector,\n (vec: VectorType, idx: number, nullByte: number, nullBit: number) =>\n ((nullByte & 1 << nullBit) !== 0) ? getFn(vec, idx) : null\n );\n}\n\n/** @ignore */\nfunction vectorIterator(vector: VectorType): IterableIterator {\n\n // If nullable, iterate manually\n if (vector.nullCount > 0) {\n return nullableIterator(vector);\n }\n\n const { type, typeId, length } = vector;\n\n // Fast case, defer to native iterators if possible\n if (vector.stride === 1 && (\n (typeId === Type.Timestamp) ||\n (typeId === Type.Int && (type as Int).bitWidth !== 64) ||\n (typeId === Type.Time && (type as Time).bitWidth !== 64) ||\n (typeId === Type.Float && (type as Float).precision > 0 /* Precision.HALF */)\n )) {\n return vector.values.subarray(0, length)[Symbol.iterator]();\n }\n\n // Otherwise, iterate manually\n return (function* (getFn) {\n for (let index = -1; ++index < length;) {\n yield getFn(vector, index);\n }\n })(getVisitor.getVisitFn(vector));\n}\n\nIteratorVisitor.prototype.visitNull = vectorIterator;\nIteratorVisitor.prototype.visitBool = vectorIterator;\nIteratorVisitor.prototype.visitInt = vectorIterator;\nIteratorVisitor.prototype.visitInt8 = vectorIterator;\nIteratorVisitor.prototype.visitInt16 = vectorIterator;\nIteratorVisitor.prototype.visitInt32 = vectorIterator;\nIteratorVisitor.prototype.visitInt64 = vectorIterator;\nIteratorVisitor.prototype.visitUint8 = vectorIterator;\nIteratorVisitor.prototype.visitUint16 = vectorIterator;\nIteratorVisitor.prototype.visitUint32 = vectorIterator;\nIteratorVisitor.prototype.visitUint64 = vectorIterator;\nIteratorVisitor.prototype.visitFloat = vectorIterator;\nIteratorVisitor.prototype.visitFloat16 = vectorIterator;\nIteratorVisitor.prototype.visitFloat32 = vectorIterator;\nIteratorVisitor.prototype.visitFloat64 = vectorIterator;\nIteratorVisitor.prototype.visitUtf8 = vectorIterator;\nIteratorVisitor.prototype.visitBinary = vectorIterator;\nIteratorVisitor.prototype.visitFixedSizeBinary = vectorIterator;\nIteratorVisitor.prototype.visitDate = vectorIterator;\nIteratorVisitor.prototype.visitDateDay = vectorIterator;\nIteratorVisitor.prototype.visitDateMillisecond = vectorIterator;\nIteratorVisitor.prototype.visitTimestamp = vectorIterator;\nIteratorVisitor.prototype.visitTimestampSecond = vectorIterator;\nIteratorVisitor.prototype.visitTimestampMillisecond = vectorIterator;\nIteratorVisitor.prototype.visitTimestampMicrosecond = vectorIterator;\nIteratorVisitor.prototype.visitTimestampNanosecond = vectorIterator;\nIteratorVisitor.prototype.visitTime = vectorIterator;\nIteratorVisitor.prototype.visitTimeSecond = vectorIterator;\nIteratorVisitor.prototype.visitTimeMillisecond = vectorIterator;\nIteratorVisitor.prototype.visitTimeMicrosecond = vectorIterator;\nIteratorVisitor.prototype.visitTimeNanosecond = vectorIterator;\nIteratorVisitor.prototype.visitDecimal = vectorIterator;\nIteratorVisitor.prototype.visitList = vectorIterator;\nIteratorVisitor.prototype.visitStruct = vectorIterator;\nIteratorVisitor.prototype.visitUnion = vectorIterator;\nIteratorVisitor.prototype.visitDenseUnion = vectorIterator;\nIteratorVisitor.prototype.visitSparseUnion = vectorIterator;\nIteratorVisitor.prototype.visitDictionary = vectorIterator;\nIteratorVisitor.prototype.visitInterval = vectorIterator;\nIteratorVisitor.prototype.visitIntervalDayTime = vectorIterator;\nIteratorVisitor.prototype.visitIntervalYearMonth = vectorIterator;\nIteratorVisitor.prototype.visitFixedSizeList = vectorIterator;\nIteratorVisitor.prototype.visitMap = vectorIterator;\n\n/** @ignore */\nexport const instance = new IteratorVisitor();\n"]}