aboutsummaryrefslogblamecommitdiffstats
path: root/library/cpp/histogram/hdr/histogram_iter.cpp
blob: d251fd5dd9b95b370f690e9434a5716fc4aa8be1 (plain) (tree)
















































































































































                                                                                    
#include "histogram_iter.h"

#include <contrib/libs/hdr_histogram/src/hdr_histogram.h>

namespace NHdr {
    // TBaseHistogramIterator -----------------------------------------------------
    TBaseHistogramIterator::TBaseHistogramIterator()
        : Iter_(new hdr_iter)
    {
    }

    TBaseHistogramIterator::~TBaseHistogramIterator() {
    }

    bool TBaseHistogramIterator::Next() {
        return hdr_iter_next(Iter_.Get());
    }

    i32 TBaseHistogramIterator::GetCountsIndex() const {
        return Iter_->counts_index;
    }

    i32 TBaseHistogramIterator::GetTotalCount() const {
        return Iter_->total_count;
    }

    i64 TBaseHistogramIterator::GetCount() const {
        return Iter_->count;
    }

    i64 TBaseHistogramIterator::GetCumulativeCount() const {
        return Iter_->cumulative_count;
    }

    i64 TBaseHistogramIterator::GetValue() const {
        return Iter_->value;
    }

    i64 TBaseHistogramIterator::GetHighestEquivalentValue() const {
        return Iter_->highest_equivalent_value;
    }

    i64 TBaseHistogramIterator::GetLowestEquivalentValue() const {
        return Iter_->lowest_equivalent_value;
    }

    i64 TBaseHistogramIterator::GetMedianEquivalentValue() const {
        return Iter_->median_equivalent_value;
    }

    i64 TBaseHistogramIterator::GetValueIteratedFrom() const {
        return Iter_->value_iterated_from;
    }

    i64 TBaseHistogramIterator::GetValueIteratedTo() const {
        return Iter_->value_iterated_to;
    }

    // TAllValuesIterator ---------------------------------------------------------

    TAllValuesIterator::TAllValuesIterator(const THistogram& histogram) {
        hdr_iter_init(Iter_.Get(), histogram.GetHdrHistogramImpl());
    }

    // TRecordedValuesIterator ----------------------------------------------------

    TRecordedValuesIterator::TRecordedValuesIterator(const THistogram& histogram) {
        hdr_iter_recorded_init(Iter_.Get(), histogram.GetHdrHistogramImpl());
    }

    i64 TRecordedValuesIterator::GetCountAddedInThisIterationStep() const {
        return Iter_->specifics.recorded.count_added_in_this_iteration_step;
    }

    // TPercentileIterator --------------------------------------------------------

    TPercentileIterator::TPercentileIterator(
        const THistogram& histogram, ui32 ticksPerHalfDistance) {
        hdr_iter_percentile_init(
            Iter_.Get(), histogram.GetHdrHistogramImpl(),
            ticksPerHalfDistance);
    }

    i32 TPercentileIterator::GetTicketsPerHalfDistance() const {
        return Iter_->specifics.percentiles.ticks_per_half_distance;
    }

    double TPercentileIterator::GetPercentileToIterateTo() const {
        return Iter_->specifics.percentiles.percentile_to_iterate_to;
    }

    double TPercentileIterator::GetPercentile() const {
        return Iter_->specifics.percentiles.percentile;
    }

    // TLinearIterator ------------------------------------------------------------

    TLinearIterator::TLinearIterator(
        const THistogram& histogram, i64 valueUnitsPerBucket) {
        hdr_iter_linear_init(
            Iter_.Get(), histogram.GetHdrHistogramImpl(), valueUnitsPerBucket);
    }

    i64 TLinearIterator::GetValueUnitsPerBucket() const {
        return Iter_->specifics.linear.value_units_per_bucket;
    }

    i64 TLinearIterator::GetCountAddedInThisIterationStep() const {
        return Iter_->specifics.linear.count_added_in_this_iteration_step;
    }

    i64 TLinearIterator::GetNextValueReportingLevel() const {
        return Iter_->specifics.linear.next_value_reporting_level;
    }

    i64 TLinearIterator::GetNextValueReportingLevelLowestEquivalent() const {
        return Iter_->specifics.linear.next_value_reporting_level_lowest_equivalent;
    }

    // TLogarithmicIterator -------------------------------------------------------

    TLogarithmicIterator::TLogarithmicIterator(
        const THistogram& histogram, i64 valueUnitsInFirstBucket,
        double logBase) {
        hdr_iter_log_init(
            Iter_.Get(), histogram.GetHdrHistogramImpl(),
            valueUnitsInFirstBucket, logBase);
    }

    double TLogarithmicIterator::GetLogBase() const {
        return Iter_->specifics.log.log_base;
    }

    i64 TLogarithmicIterator::GetCountAddedInThisIterationStep() const {
        return Iter_->specifics.log.count_added_in_this_iteration_step;
    }

    i64 TLogarithmicIterator::GetNextValueReportingLevel() const {
        return Iter_->specifics.log.next_value_reporting_level;
    }

    i64 TLogarithmicIterator::GetNextValueReportingLevelLowestEquivalent() const {
        return Iter_->specifics.log.next_value_reporting_level_lowest_equivalent;
    }

}