#
# 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: {
    # TODO:  Rename to ~valueVectorModesAndTypes for clarity.
    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),
    decimalaggrtypes3:        tdd(../data/DecimalAggrTypes3.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),
    countAggrTypes:           tdd(../data/CountAggrTypes.tdd)
}
freemarkerLinks: {
    includes: includes/
}
