# 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),
    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/
}
