Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-08-27 08:47:24

0001 // Licensed to the Apache Software Foundation (ASF) under one
0002 // or more contributor license agreements.  See the NOTICE file
0003 // distributed with this work for additional information
0004 // regarding copyright ownership.  The ASF licenses this file
0005 // to you under the Apache License, Version 2.0 (the
0006 // "License"); you may not use this file except in compliance
0007 // with the License.  You may obtain a copy of the License at
0008 //
0009 //   http://www.apache.org/licenses/LICENSE-2.0
0010 //
0011 // Unless required by applicable law or agreed to in writing,
0012 // software distributed under the License is distributed on an
0013 // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
0014 // KIND, either express or implied.  See the License for the
0015 // specific language governing permissions and limitations
0016 // under the License.
0017 
0018 #pragma once
0019 
0020 #include "arrow/status.h"
0021 #include "arrow/type_fwd.h"
0022 #include "arrow/util/visibility.h"
0023 
0024 namespace arrow {
0025 
0026 /// \brief Abstract array visitor class
0027 ///
0028 /// Subclass this to create a visitor that can be used with the Array::Accept()
0029 /// method.
0030 class ARROW_EXPORT ArrayVisitor {
0031  public:
0032   virtual ~ArrayVisitor() = default;
0033 
0034   virtual Status Visit(const NullArray& array);
0035   virtual Status Visit(const BooleanArray& array);
0036   virtual Status Visit(const Int8Array& array);
0037   virtual Status Visit(const Int16Array& array);
0038   virtual Status Visit(const Int32Array& array);
0039   virtual Status Visit(const Int64Array& array);
0040   virtual Status Visit(const UInt8Array& array);
0041   virtual Status Visit(const UInt16Array& array);
0042   virtual Status Visit(const UInt32Array& array);
0043   virtual Status Visit(const UInt64Array& array);
0044   virtual Status Visit(const HalfFloatArray& array);
0045   virtual Status Visit(const FloatArray& array);
0046   virtual Status Visit(const DoubleArray& array);
0047   virtual Status Visit(const StringArray& array);
0048   virtual Status Visit(const StringViewArray& array);
0049   virtual Status Visit(const BinaryArray& array);
0050   virtual Status Visit(const BinaryViewArray& array);
0051   virtual Status Visit(const LargeStringArray& array);
0052   virtual Status Visit(const LargeBinaryArray& array);
0053   virtual Status Visit(const FixedSizeBinaryArray& array);
0054   virtual Status Visit(const Date32Array& array);
0055   virtual Status Visit(const Date64Array& array);
0056   virtual Status Visit(const Time32Array& array);
0057   virtual Status Visit(const Time64Array& array);
0058   virtual Status Visit(const TimestampArray& array);
0059   virtual Status Visit(const DayTimeIntervalArray& array);
0060   virtual Status Visit(const MonthDayNanoIntervalArray& array);
0061   virtual Status Visit(const MonthIntervalArray& array);
0062   virtual Status Visit(const DurationArray& array);
0063   virtual Status Visit(const Decimal32Array& array);
0064   virtual Status Visit(const Decimal64Array& array);
0065   virtual Status Visit(const Decimal128Array& array);
0066   virtual Status Visit(const Decimal256Array& array);
0067   virtual Status Visit(const ListArray& array);
0068   virtual Status Visit(const LargeListArray& array);
0069   virtual Status Visit(const ListViewArray& array);
0070   virtual Status Visit(const LargeListViewArray& array);
0071   virtual Status Visit(const MapArray& array);
0072   virtual Status Visit(const FixedSizeListArray& array);
0073   virtual Status Visit(const StructArray& array);
0074   virtual Status Visit(const SparseUnionArray& array);
0075   virtual Status Visit(const DenseUnionArray& array);
0076   virtual Status Visit(const DictionaryArray& array);
0077   virtual Status Visit(const RunEndEncodedArray& array);
0078   virtual Status Visit(const ExtensionArray& array);
0079 };
0080 
0081 /// \brief Abstract type visitor class
0082 ///
0083 /// Subclass this to create a visitor that can be used with the DataType::Accept()
0084 /// method.
0085 class ARROW_EXPORT TypeVisitor {
0086  public:
0087   virtual ~TypeVisitor() = default;
0088 
0089   virtual Status Visit(const NullType& type);
0090   virtual Status Visit(const BooleanType& type);
0091   virtual Status Visit(const Int8Type& type);
0092   virtual Status Visit(const Int16Type& type);
0093   virtual Status Visit(const Int32Type& type);
0094   virtual Status Visit(const Int64Type& type);
0095   virtual Status Visit(const UInt8Type& type);
0096   virtual Status Visit(const UInt16Type& type);
0097   virtual Status Visit(const UInt32Type& type);
0098   virtual Status Visit(const UInt64Type& type);
0099   virtual Status Visit(const HalfFloatType& type);
0100   virtual Status Visit(const FloatType& type);
0101   virtual Status Visit(const DoubleType& type);
0102   virtual Status Visit(const StringType& type);
0103   virtual Status Visit(const StringViewType& type);
0104   virtual Status Visit(const BinaryType& type);
0105   virtual Status Visit(const BinaryViewType& type);
0106   virtual Status Visit(const LargeStringType& type);
0107   virtual Status Visit(const LargeBinaryType& type);
0108   virtual Status Visit(const FixedSizeBinaryType& type);
0109   virtual Status Visit(const Date64Type& type);
0110   virtual Status Visit(const Date32Type& type);
0111   virtual Status Visit(const Time32Type& type);
0112   virtual Status Visit(const Time64Type& type);
0113   virtual Status Visit(const TimestampType& type);
0114   virtual Status Visit(const MonthDayNanoIntervalType& type);
0115   virtual Status Visit(const MonthIntervalType& type);
0116   virtual Status Visit(const DayTimeIntervalType& type);
0117   virtual Status Visit(const DurationType& type);
0118   virtual Status Visit(const Decimal32Type& type);
0119   virtual Status Visit(const Decimal64Type& type);
0120   virtual Status Visit(const Decimal128Type& type);
0121   virtual Status Visit(const Decimal256Type& type);
0122   virtual Status Visit(const ListType& type);
0123   virtual Status Visit(const LargeListType& type);
0124   virtual Status Visit(const ListViewType& scalar);
0125   virtual Status Visit(const LargeListViewType& scalar);
0126   virtual Status Visit(const MapType& type);
0127   virtual Status Visit(const FixedSizeListType& type);
0128   virtual Status Visit(const StructType& type);
0129   virtual Status Visit(const SparseUnionType& type);
0130   virtual Status Visit(const DenseUnionType& type);
0131   virtual Status Visit(const DictionaryType& type);
0132   virtual Status Visit(const RunEndEncodedType& type);
0133   virtual Status Visit(const ExtensionType& type);
0134 };
0135 
0136 /// \brief Abstract scalar visitor class
0137 ///
0138 /// Subclass this to create a visitor that can be used with the Scalar::Accept()
0139 /// method.
0140 class ARROW_EXPORT ScalarVisitor {
0141  public:
0142   virtual ~ScalarVisitor() = default;
0143 
0144   virtual Status Visit(const NullScalar& scalar);
0145   virtual Status Visit(const BooleanScalar& scalar);
0146   virtual Status Visit(const Int8Scalar& scalar);
0147   virtual Status Visit(const Int16Scalar& scalar);
0148   virtual Status Visit(const Int32Scalar& scalar);
0149   virtual Status Visit(const Int64Scalar& scalar);
0150   virtual Status Visit(const UInt8Scalar& scalar);
0151   virtual Status Visit(const UInt16Scalar& scalar);
0152   virtual Status Visit(const UInt32Scalar& scalar);
0153   virtual Status Visit(const UInt64Scalar& scalar);
0154   virtual Status Visit(const HalfFloatScalar& scalar);
0155   virtual Status Visit(const FloatScalar& scalar);
0156   virtual Status Visit(const DoubleScalar& scalar);
0157   virtual Status Visit(const StringScalar& scalar);
0158   virtual Status Visit(const StringViewScalar& scalar);
0159   virtual Status Visit(const BinaryScalar& scalar);
0160   virtual Status Visit(const BinaryViewScalar& scalar);
0161   virtual Status Visit(const LargeStringScalar& scalar);
0162   virtual Status Visit(const LargeBinaryScalar& scalar);
0163   virtual Status Visit(const FixedSizeBinaryScalar& scalar);
0164   virtual Status Visit(const Date64Scalar& scalar);
0165   virtual Status Visit(const Date32Scalar& scalar);
0166   virtual Status Visit(const Time32Scalar& scalar);
0167   virtual Status Visit(const Time64Scalar& scalar);
0168   virtual Status Visit(const TimestampScalar& scalar);
0169   virtual Status Visit(const DayTimeIntervalScalar& scalar);
0170   virtual Status Visit(const MonthDayNanoIntervalScalar& type);
0171   virtual Status Visit(const MonthIntervalScalar& scalar);
0172   virtual Status Visit(const DurationScalar& scalar);
0173   virtual Status Visit(const Decimal32Scalar& scalar);
0174   virtual Status Visit(const Decimal64Scalar& scalar);
0175   virtual Status Visit(const Decimal128Scalar& scalar);
0176   virtual Status Visit(const Decimal256Scalar& scalar);
0177   virtual Status Visit(const ListScalar& scalar);
0178   virtual Status Visit(const LargeListScalar& scalar);
0179   virtual Status Visit(const ListViewScalar& scalar);
0180   virtual Status Visit(const LargeListViewScalar& scalar);
0181   virtual Status Visit(const MapScalar& scalar);
0182   virtual Status Visit(const FixedSizeListScalar& scalar);
0183   virtual Status Visit(const StructScalar& scalar);
0184   virtual Status Visit(const DictionaryScalar& scalar);
0185   virtual Status Visit(const SparseUnionScalar& scalar);
0186   virtual Status Visit(const DenseUnionScalar& scalar);
0187   virtual Status Visit(const RunEndEncodedScalar& scalar);
0188   virtual Status Visit(const ExtensionScalar& scalar);
0189 };
0190 
0191 }  // namespace arrow