#
# 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),
    aggrtypes4:               tdd(../data/AggrTypes4.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/
}
