# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
# http:# www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

data: {
    vv:                       tdd(../data/ValueVectorTypes.tdd),

    # Most types for comparison functions (for templates/ComparisonFunctions.java).
    comparisonTypesMain:      tdd(../data/ComparisonTypesMain.tdd),

    # Decimal types for comparison function (for
    # templates/DecimalFunctions/ComparisonFunctions.java).
    comparisonTypesDecimal:   tdd(../data/ComparisonTypesDecimal.tdd),

    cast:                     tdd(../data/Casts.tdd),
    MathFunctionTypes:        tdd(../data/MathFunctionTypes.tdd),
    mathFunc:                 tdd(../data/MathFunc.tdd),
    aggrtypes1:               tdd(../data/AggrTypes1.tdd),
    decimalaggrtypes1:        tdd(../data/DecimalAggrTypes1.tdd),
    decimalaggrtypes2:        tdd(../data/DecimalAggrTypes2.tdd),
    aggrtypes2:               tdd(../data/AggrTypes2.tdd),
    aggrtypes3:               tdd(../data/AggrTypes3.tdd),
    covarTypes:               tdd(../data/CovarTypes.tdd),
    corrTypes:                tdd(../data/CorrelationTypes.tdd),
    logicalTypes:             tdd(../data/AggrBitwiseLogicalTypes.tdd),
    extract:                  tdd(../data/ExtractTypes.tdd),
    parser:                   tdd(../data/Parser.tdd),
    dateIntervalFunc:         tdd(../data/DateIntervalFunc.tdd),
    intervalNumericTypes:     tdd(../data/IntervalNumericTypes.tdd),
    extract:                  tdd(../data/ExtractTypes.tdd),
    sumzero:                  tdd(../data/SumZero.tdd),
    numericTypes:             tdd(../data/NumericTypes.tdd),
    casthigh:                 tdd(../data/CastHigh.tdd)
}
freemarkerLinks: {
    includes: includes/
}
