{"version":3,"sources":["visitor.ts"],"names":[],"mappings":"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","file":"visitor.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 { Vector } from './vector';\nimport { Type, Precision, DateUnit, TimeUnit, IntervalUnit, UnionMode } from './enum';\nimport { DataType, Float, Int, Date_, Interval, Time, Timestamp, Union, } from './type';\n\nexport abstract class Visitor {\n    public visitMany(nodes: any[], ...args: any[][]) {\n        return nodes.map((node, i) => this.visit(node, ...args.map((x) => x[i])));\n    }\n    public visit(...args: any[]) {\n        return this.getVisitFn(args[0], false).apply(this, args);\n    }\n    public getVisitFn(node: any, throwIfNotFound = true) {\n        return getVisitFn(this, node, throwIfNotFound);\n    }\n    public visitNull            (_node: any, ..._args: any[]): any { return null; }\n    public visitBool            (_node: any, ..._args: any[]): any { return null; }\n    public visitInt             (_node: any, ..._args: any[]): any { return null; }\n    public visitFloat           (_node: any, ..._args: any[]): any { return null; }\n    public visitUtf8            (_node: any, ..._args: any[]): any { return null; }\n    public visitBinary          (_node: any, ..._args: any[]): any { return null; }\n    public visitFixedSizeBinary (_node: any, ..._args: any[]): any { return null; }\n    public visitDate            (_node: any, ..._args: any[]): any { return null; }\n    public visitTimestamp       (_node: any, ..._args: any[]): any { return null; }\n    public visitTime            (_node: any, ..._args: any[]): any { return null; }\n    public visitDecimal         (_node: any, ..._args: any[]): any { return null; }\n    public visitList            (_node: any, ..._args: any[]): any { return null; }\n    public visitStruct          (_node: any, ..._args: any[]): any { return null; }\n    public visitUnion           (_node: any, ..._args: any[]): any { return null; }\n    public visitDictionary      (_node: any, ..._args: any[]): any { return null; }\n    public visitInterval        (_node: any, ..._args: any[]): any { return null; }\n    public visitFixedSizeList   (_node: any, ..._args: any[]): any { return null; }\n    public visitMap             (_node: any, ..._args: any[]): any { return null; }\n}\n\n/** @ignore */\nfunction getVisitFn<T extends DataType>(visitor: Visitor, node: any, throwIfNotFound = true) {\n    let fn: any = null;\n    let dtype: T['TType'] = Type.NONE;\n    // tslint:disable\n    if      (node instanceof Data    ) { dtype = inferDType(node.type as T); }\n    else if (node instanceof Vector  ) { dtype = inferDType(node.type as T); }\n    else if (node instanceof DataType) { dtype = inferDType(node      as T); }\n    else if (typeof (dtype = node) !== 'number') { dtype = Type[node] as any as T['TType']; }\n\n    switch (dtype) {\n        case Type.Null:                 fn = visitor.visitNull; break;\n        case Type.Bool:                 fn = visitor.visitBool; break;\n        case Type.Int:                  fn = visitor.visitInt; break;\n        case Type.Int8:                 fn = visitor.visitInt8 || visitor.visitInt; break;\n        case Type.Int16:                fn = visitor.visitInt16 || visitor.visitInt; break;\n        case Type.Int32:                fn = visitor.visitInt32 || visitor.visitInt; break;\n        case Type.Int64:                fn = visitor.visitInt64 || visitor.visitInt; break;\n        case Type.Uint8:                fn = visitor.visitUint8 || visitor.visitInt; break;\n        case Type.Uint16:               fn = visitor.visitUint16 || visitor.visitInt; break;\n        case Type.Uint32:               fn = visitor.visitUint32 || visitor.visitInt; break;\n        case Type.Uint64:               fn = visitor.visitUint64 || visitor.visitInt; break;\n        case Type.Float:                fn = visitor.visitFloat; break;\n        case Type.Float16:              fn = visitor.visitFloat16 || visitor.visitFloat; break;\n        case Type.Float32:              fn = visitor.visitFloat32 || visitor.visitFloat; break;\n        case Type.Float64:              fn = visitor.visitFloat64 || visitor.visitFloat; break;\n        case Type.Utf8:                 fn = visitor.visitUtf8; break;\n        case Type.Binary:               fn = visitor.visitBinary; break;\n        case Type.FixedSizeBinary:      fn = visitor.visitFixedSizeBinary; break;\n        case Type.Date:                 fn = visitor.visitDate; break;\n        case Type.DateDay:              fn = visitor.visitDateDay || visitor.visitDate; break;\n        case Type.DateMillisecond:      fn = visitor.visitDateMillisecond || visitor.visitDate; break;\n        case Type.Timestamp:            fn = visitor.visitTimestamp; break;\n        case Type.TimestampSecond:      fn = visitor.visitTimestampSecond || visitor.visitTimestamp; break;\n        case Type.TimestampMillisecond: fn = visitor.visitTimestampMillisecond || visitor.visitTimestamp; break;\n        case Type.TimestampMicrosecond: fn = visitor.visitTimestampMicrosecond || visitor.visitTimestamp; break;\n        case Type.TimestampNanosecond:  fn = visitor.visitTimestampNanosecond || visitor.visitTimestamp; break;\n        case Type.Time:                 fn = visitor.visitTime; break;\n        case Type.TimeSecond:           fn = visitor.visitTimeSecond || visitor.visitTime; break;\n        case Type.TimeMillisecond:      fn = visitor.visitTimeMillisecond || visitor.visitTime; break;\n        case Type.TimeMicrosecond:      fn = visitor.visitTimeMicrosecond || visitor.visitTime; break;\n        case Type.TimeNanosecond:       fn = visitor.visitTimeNanosecond || visitor.visitTime; break;\n        case Type.Decimal:              fn = visitor.visitDecimal; break;\n        case Type.List:                 fn = visitor.visitList; break;\n        case Type.Struct:               fn = visitor.visitStruct; break;\n        case Type.Union:                fn = visitor.visitUnion; break;\n        case Type.DenseUnion:           fn = visitor.visitDenseUnion || visitor.visitUnion; break;\n        case Type.SparseUnion:          fn = visitor.visitSparseUnion || visitor.visitUnion; break;\n        case Type.Dictionary:           fn = visitor.visitDictionary; break;\n        case Type.Interval:             fn = visitor.visitInterval; break;\n        case Type.IntervalDayTime:      fn = visitor.visitIntervalDayTime || visitor.visitInterval; break;\n        case Type.IntervalYearMonth:    fn = visitor.visitIntervalYearMonth || visitor.visitInterval; break;\n        case Type.FixedSizeList:        fn = visitor.visitFixedSizeList; break;\n        case Type.Map:                  fn = visitor.visitMap; break;\n    }\n    if (typeof fn === 'function') return fn;\n    if (!throwIfNotFound) return () => null;\n    throw new Error(`Unrecognized type '${Type[dtype]}'`);\n}\n\n/** @ignore */\nfunction inferDType<T extends DataType>(type: T): Type {\n    switch (type.typeId) {\n        case Type.Null: return Type.Null;\n        case Type.Int:\n            const { bitWidth, isSigned } = (type as any as Int);\n            switch (bitWidth) {\n                case  8: return isSigned ? Type.Int8  : Type.Uint8 ;\n                case 16: return isSigned ? Type.Int16 : Type.Uint16;\n                case 32: return isSigned ? Type.Int32 : Type.Uint32;\n                case 64: return isSigned ? Type.Int64 : Type.Uint64;\n            }\n            // @ts-ignore\n            return Type.Int;\n        case Type.Float:\n            switch((type as any as Float).precision) {\n                case Precision.HALF: return Type.Float16;\n                case Precision.SINGLE: return Type.Float32;\n                case Precision.DOUBLE: return Type.Float64;\n            }\n            // @ts-ignore\n            return Type.Float;\n        case Type.Binary: return Type.Binary;\n        case Type.Utf8: return Type.Utf8;\n        case Type.Bool: return Type.Bool;\n        case Type.Decimal: return Type.Decimal;\n        case Type.Time:\n            switch ((type as any as Time).unit) {\n                case TimeUnit.SECOND: return Type.TimeSecond;\n                case TimeUnit.MILLISECOND: return Type.TimeMillisecond;\n                case TimeUnit.MICROSECOND: return Type.TimeMicrosecond;\n                case TimeUnit.NANOSECOND: return Type.TimeNanosecond;\n            }\n            // @ts-ignore\n            return Type.Time;\n        case Type.Timestamp:\n            switch ((type as any as Timestamp).unit) {\n                case TimeUnit.SECOND: return Type.TimestampSecond;\n                case TimeUnit.MILLISECOND: return Type.TimestampMillisecond;\n                case TimeUnit.MICROSECOND: return Type.TimestampMicrosecond;\n                case TimeUnit.NANOSECOND: return Type.TimestampNanosecond;\n            }\n            // @ts-ignore\n            return Type.Timestamp;\n        case Type.Date:\n            switch ((type as any as Date_).unit) {\n                case DateUnit.DAY: return Type.DateDay;\n                case DateUnit.MILLISECOND: return Type.DateMillisecond;\n            }\n            // @ts-ignore\n            return Type.Date;\n        case Type.Interval:\n            switch ((type as any as Interval).unit) {\n                case IntervalUnit.DAY_TIME: return Type.IntervalDayTime;\n                case IntervalUnit.YEAR_MONTH: return Type.IntervalYearMonth;\n            }\n            // @ts-ignore\n            return Type.Interval;\n        case Type.Map: return Type.Map;\n        case Type.List: return Type.List;\n        case Type.Struct: return Type.Struct;\n        case Type.Union:\n            switch ((type as any as Union).mode) {\n                case UnionMode.Dense: return Type.DenseUnion;\n                case UnionMode.Sparse: return Type.SparseUnion;\n            }\n            // @ts-ignore\n            return Type.Union;\n        case Type.FixedSizeBinary: return Type.FixedSizeBinary;\n        case Type.FixedSizeList: return Type.FixedSizeList;\n        case Type.Dictionary: return Type.Dictionary;\n    }\n    throw new Error(`Unrecognized type '${Type[type.typeId]}'`);\n}\n\nexport interface Visitor {\n    visitNull                  (node: any, ...args: any[]): any;\n    visitBool                  (node: any, ...args: any[]): any;\n    visitInt                   (node: any, ...args: any[]): any;\n    visitInt8?                 (node: any, ...args: any[]): any;\n    visitInt16?                (node: any, ...args: any[]): any;\n    visitInt32?                (node: any, ...args: any[]): any;\n    visitInt64?                (node: any, ...args: any[]): any;\n    visitUint8?                (node: any, ...args: any[]): any;\n    visitUint16?               (node: any, ...args: any[]): any;\n    visitUint32?               (node: any, ...args: any[]): any;\n    visitUint64?               (node: any, ...args: any[]): any;\n    visitFloat                 (node: any, ...args: any[]): any;\n    visitFloat16?              (node: any, ...args: any[]): any;\n    visitFloat32?              (node: any, ...args: any[]): any;\n    visitFloat64?              (node: any, ...args: any[]): any;\n    visitUtf8                  (node: any, ...args: any[]): any;\n    visitBinary                (node: any, ...args: any[]): any;\n    visitFixedSizeBinary       (node: any, ...args: any[]): any;\n    visitDate                  (node: any, ...args: any[]): any;\n    visitDateDay?              (node: any, ...args: any[]): any;\n    visitDateMillisecond?      (node: any, ...args: any[]): any;\n    visitTimestamp             (node: any, ...args: any[]): any;\n    visitTimestampSecond?      (node: any, ...args: any[]): any;\n    visitTimestampMillisecond? (node: any, ...args: any[]): any;\n    visitTimestampMicrosecond? (node: any, ...args: any[]): any;\n    visitTimestampNanosecond?  (node: any, ...args: any[]): any;\n    visitTime                  (node: any, ...args: any[]): any;\n    visitTimeSecond?           (node: any, ...args: any[]): any;\n    visitTimeMillisecond?      (node: any, ...args: any[]): any;\n    visitTimeMicrosecond?      (node: any, ...args: any[]): any;\n    visitTimeNanosecond?       (node: any, ...args: any[]): any;\n    visitDecimal               (node: any, ...args: any[]): any;\n    visitList                  (node: any, ...args: any[]): any;\n    visitStruct                (node: any, ...args: any[]): any;\n    visitUnion                 (node: any, ...args: any[]): any;\n    visitDenseUnion?           (node: any, ...args: any[]): any;\n    visitSparseUnion?          (node: any, ...args: any[]): any;\n    visitDictionary            (node: any, ...args: any[]): any;\n    visitInterval              (node: any, ...args: any[]): any;\n    visitIntervalDayTime?      (node: any, ...args: any[]): any;\n    visitIntervalYearMonth?    (node: any, ...args: any[]): any;\n    visitFixedSizeList         (node: any, ...args: any[]): any;\n    visitMap                   (node: any, ...args: any[]): any;\n}\n\n// Add these here so they're picked up by the externs creator\n// in the build, and closure-compiler doesn't minify them away\n(Visitor.prototype as any).visitInt8 = null;\n(Visitor.prototype as any).visitInt16 = null;\n(Visitor.prototype as any).visitInt32 = null;\n(Visitor.prototype as any).visitInt64 = null;\n(Visitor.prototype as any).visitUint8 = null;\n(Visitor.prototype as any).visitUint16 = null;\n(Visitor.prototype as any).visitUint32 = null;\n(Visitor.prototype as any).visitUint64 = null;\n(Visitor.prototype as any).visitFloat16 = null;\n(Visitor.prototype as any).visitFloat32 = null;\n(Visitor.prototype as any).visitFloat64 = null;\n(Visitor.prototype as any).visitDateDay = null;\n(Visitor.prototype as any).visitDateMillisecond = null;\n(Visitor.prototype as any).visitTimestampSecond = null;\n(Visitor.prototype as any).visitTimestampMillisecond = null;\n(Visitor.prototype as any).visitTimestampMicrosecond = null;\n(Visitor.prototype as any).visitTimestampNanosecond = null;\n(Visitor.prototype as any).visitTimeSecond = null;\n(Visitor.prototype as any).visitTimeMillisecond = null;\n(Visitor.prototype as any).visitTimeMicrosecond = null;\n(Visitor.prototype as any).visitTimeNanosecond = null;\n(Visitor.prototype as any).visitDenseUnion = null;\n(Visitor.prototype as any).visitSparseUnion = null;\n(Visitor.prototype as any).visitIntervalDayTime = null;\n(Visitor.prototype as any).visitIntervalYearMonth = null;\n"]}