TFeatureFunctionVecMap buildFeatureFunctionMap()

in lib/model/FunctionTypes.cc [1077:1319]


TFeatureFunctionVecMap buildFeatureFunctionMap() {
    TFeatureFunctionVecMap result;

    // This is written like this to generate a compiler warning
    // when a new function is added. This map must include every
    // function so add a case if you add a new function.

    switch (E_IndividualCount) {
    // The fall-through is intentional in this switch: the switched-on value
    // selects the first case and then all the calls to addFeatures() are
    // made
    case E_IndividualCount:
        addFeatures(E_IndividualCount, result);
        BOOST_FALLTHROUGH;
    case E_IndividualNonZeroCount:
        addFeatures(E_IndividualNonZeroCount, result);
        BOOST_FALLTHROUGH;
    case E_IndividualRareCount:
        addFeatures(E_IndividualRareCount, result);
        BOOST_FALLTHROUGH;
    case E_IndividualRareNonZeroCount:
        addFeatures(E_IndividualRareNonZeroCount, result);
        BOOST_FALLTHROUGH;
    case E_IndividualRare:
        addFeatures(E_IndividualRare, result);
        BOOST_FALLTHROUGH;
    case E_IndividualLowCounts:
        addFeatures(E_IndividualLowCounts, result);
        BOOST_FALLTHROUGH;
    case E_IndividualHighCounts:
        addFeatures(E_IndividualHighCounts, result);
        BOOST_FALLTHROUGH;
    case E_IndividualLowNonZeroCount:
        addFeatures(E_IndividualLowNonZeroCount, result);
        BOOST_FALLTHROUGH;
    case E_IndividualHighNonZeroCount:
        addFeatures(E_IndividualHighNonZeroCount, result);
        BOOST_FALLTHROUGH;
    case E_IndividualDistinctCount:
        addFeatures(E_IndividualDistinctCount, result);
        BOOST_FALLTHROUGH;
    case E_IndividualLowDistinctCount:
        addFeatures(E_IndividualLowDistinctCount, result);
        BOOST_FALLTHROUGH;
    case E_IndividualHighDistinctCount:
        addFeatures(E_IndividualHighDistinctCount, result);
        BOOST_FALLTHROUGH;
    case E_IndividualInfoContent:
        addFeatures(E_IndividualInfoContent, result);
        BOOST_FALLTHROUGH;
    case E_IndividualHighInfoContent:
        addFeatures(E_IndividualHighInfoContent, result);
        BOOST_FALLTHROUGH;
    case E_IndividualLowInfoContent:
        addFeatures(E_IndividualLowInfoContent, result);
        BOOST_FALLTHROUGH;
    case E_IndividualTimeOfDay:
        addFeatures(E_IndividualTimeOfDay, result);
        BOOST_FALLTHROUGH;
    case E_IndividualTimeOfWeek:
        addFeatures(E_IndividualTimeOfWeek, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMetric:
        addFeatures(E_IndividualMetric, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMetricMean:
        addFeatures(E_IndividualMetricMean, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMetricLowMean:
        addFeatures(E_IndividualMetricLowMean, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMetricHighMean:
        addFeatures(E_IndividualMetricHighMean, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMetricMedian:
        addFeatures(E_IndividualMetricMedian, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMetricLowMedian:
        addFeatures(E_IndividualMetricLowMedian, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMetricHighMedian:
        addFeatures(E_IndividualMetricHighMedian, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMetricMin:
        addFeatures(E_IndividualMetricMin, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMetricMax:
        addFeatures(E_IndividualMetricMax, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMetricSum:
        addFeatures(E_IndividualMetricSum, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMetricVariance:
        addFeatures(E_IndividualMetricVariance, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMetricLowVariance:
        addFeatures(E_IndividualMetricLowVariance, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMetricHighVariance:
        addFeatures(E_IndividualMetricHighVariance, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMetricLowSum:
        addFeatures(E_IndividualMetricLowSum, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMetricHighSum:
        addFeatures(E_IndividualMetricHighSum, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMetricNonNullSum:
        addFeatures(E_IndividualMetricNonNullSum, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMetricLowNonNullSum:
        addFeatures(E_IndividualMetricLowNonNullSum, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMetricHighNonNullSum:
        addFeatures(E_IndividualMetricHighNonNullSum, result);
        BOOST_FALLTHROUGH;
    case E_IndividualLatLong:
        addFeatures(E_IndividualLatLong, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMaxVelocity:
        addFeatures(E_IndividualMaxVelocity, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMinVelocity:
        addFeatures(E_IndividualMinVelocity, result);
        BOOST_FALLTHROUGH;
    case E_IndividualMeanVelocity:
        addFeatures(E_IndividualMeanVelocity, result);
        BOOST_FALLTHROUGH;
    case E_IndividualSumVelocity:
        addFeatures(E_IndividualSumVelocity, result);
        BOOST_FALLTHROUGH;
    case E_PopulationCount:
        addFeatures(E_PopulationCount, result);
        BOOST_FALLTHROUGH;
    case E_PopulationDistinctCount:
        addFeatures(E_PopulationDistinctCount, result);
        BOOST_FALLTHROUGH;
    case E_PopulationLowDistinctCount:
        addFeatures(E_PopulationLowDistinctCount, result);
        BOOST_FALLTHROUGH;
    case E_PopulationHighDistinctCount:
        addFeatures(E_PopulationHighDistinctCount, result);
        BOOST_FALLTHROUGH;
    case E_PopulationRare:
        addFeatures(E_PopulationRare, result);
        BOOST_FALLTHROUGH;
    case E_PopulationRareCount:
        addFeatures(E_PopulationRareCount, result);
        BOOST_FALLTHROUGH;
    case E_PopulationFreqRare:
        addFeatures(E_PopulationFreqRare, result);
        BOOST_FALLTHROUGH;
    case E_PopulationFreqRareCount:
        addFeatures(E_PopulationFreqRareCount, result);
        BOOST_FALLTHROUGH;
    case E_PopulationLowCounts:
        addFeatures(E_PopulationLowCounts, result);
        BOOST_FALLTHROUGH;
    case E_PopulationHighCounts:
        addFeatures(E_PopulationHighCounts, result);
        BOOST_FALLTHROUGH;
    case E_PopulationInfoContent:
        addFeatures(E_PopulationInfoContent, result);
        BOOST_FALLTHROUGH;
    case E_PopulationLowInfoContent:
        addFeatures(E_PopulationLowInfoContent, result);
        BOOST_FALLTHROUGH;
    case E_PopulationHighInfoContent:
        addFeatures(E_PopulationHighInfoContent, result);
        BOOST_FALLTHROUGH;
    case E_PopulationTimeOfDay:
        addFeatures(E_PopulationTimeOfDay, result);
        BOOST_FALLTHROUGH;
    case E_PopulationTimeOfWeek:
        addFeatures(E_PopulationTimeOfWeek, result);
        BOOST_FALLTHROUGH;
    case E_PopulationMetric:
        addFeatures(E_PopulationMetric, result);
        BOOST_FALLTHROUGH;
    case E_PopulationMetricMean:
        addFeatures(E_PopulationMetricMean, result);
        BOOST_FALLTHROUGH;
    case E_PopulationMetricLowMean:
        addFeatures(E_PopulationMetricLowMean, result);
        BOOST_FALLTHROUGH;
    case E_PopulationMetricHighMean:
        addFeatures(E_PopulationMetricHighMean, result);
        BOOST_FALLTHROUGH;
    case E_PopulationMetricMedian:
        addFeatures(E_PopulationMetricMedian, result);
        BOOST_FALLTHROUGH;
    case E_PopulationMetricLowMedian:
        addFeatures(E_PopulationMetricLowMedian, result);
        BOOST_FALLTHROUGH;
    case E_PopulationMetricHighMedian:
        addFeatures(E_PopulationMetricHighMedian, result);
        BOOST_FALLTHROUGH;
    case E_PopulationMetricMin:
        addFeatures(E_PopulationMetricMin, result);
        BOOST_FALLTHROUGH;
    case E_PopulationMetricMax:
        addFeatures(E_PopulationMetricMax, result);
        BOOST_FALLTHROUGH;
    case E_PopulationMetricVariance:
        addFeatures(E_PopulationMetricVariance, result);
        BOOST_FALLTHROUGH;
    case E_PopulationMetricLowVariance:
        addFeatures(E_PopulationMetricLowVariance, result);
        BOOST_FALLTHROUGH;
    case E_PopulationMetricHighVariance:
        addFeatures(E_PopulationMetricHighVariance, result);
        BOOST_FALLTHROUGH;
    case E_PopulationMetricSum:
        addFeatures(E_PopulationMetricSum, result);
        BOOST_FALLTHROUGH;
    case E_PopulationMetricLowSum:
        addFeatures(E_PopulationMetricLowSum, result);
        BOOST_FALLTHROUGH;
    case E_PopulationMetricHighSum:
        addFeatures(E_PopulationMetricHighSum, result);
        BOOST_FALLTHROUGH;
    case E_PopulationLatLong:
        addFeatures(E_PopulationLatLong, result);
        BOOST_FALLTHROUGH;
    case E_PopulationMaxVelocity:
        addFeatures(E_PopulationMaxVelocity, result);
        BOOST_FALLTHROUGH;
    case E_PopulationMinVelocity:
        addFeatures(E_PopulationMinVelocity, result);
        BOOST_FALLTHROUGH;
    case E_PopulationMeanVelocity:
        addFeatures(E_PopulationMeanVelocity, result);
        BOOST_FALLTHROUGH;
    case E_PopulationSumVelocity:
        addFeatures(E_PopulationSumVelocity, result);
    }

    for (TFeatureFunctionVecMapItr i = result.begin(); i != result.end(); ++i) {
        std::sort(i->second.begin(), i->second.end());
    }

    return result;
}