15#ifndef TOOLBOX_HDR_ITERATOR
16#define TOOLBOX_HDR_ITERATOR
45 std::int64_t count() const noexcept {
return count_; }
49 std::int64_t
value() const noexcept {
return value_; }
56 bool next() noexcept {
return do_next(); }
59 bool has_buckets() const noexcept;
60 bool has_next() const noexcept;
61 std::int64_t peek_next_value_from_index() const noexcept;
62 bool next_value_greater_than_reporting_level_upper_bound(
63 std::int64_t reporting_level_upper_bound) const noexcept;
65 bool basic_next() noexcept;
66 bool move_next() noexcept;
67 void update_iterated_values(
std::int64_t new_value_iterated_to) noexcept;
69 virtual
bool do_next() noexcept;
73 std::int32_t counts_index_;
75 std::int64_t total_count_;
77 std::int64_t cumulative_count_;
79 std::int64_t highest_equivalent_value_;
80 std::int64_t lowest_equivalent_value_;
81 std::int64_t median_equivalent_value_;
82 std::int64_t value_iterated_from_;
83 std::int64_t value_iterated_to_;
100 double percentile() const noexcept {
return percentile_; }
103 bool do_next() noexcept override;
106 bool seen_last_value_;
107 std::int32_t ticks_per_half_distance_;
108 double percentile_to_iterate_to_;
123 std::int64_t count_added_in_this_iteration_step() const noexcept
125 return count_added_in_this_iteration_step_;
132 std::int64_t count_added_in_this_iteration_step_{0};
150 bool do_next() noexcept override;
168 bool do_next() noexcept override;
171 std::int64_t value_units_per_bucket_;
172 std::int64_t next_value_reporting_level_;
173 std::int64_t next_value_reporting_level_lowest_equivalent_;
180 double log_base)
noexcept;
192 bool do_next() noexcept override;
196 std::int64_t next_value_reporting_level_;
197 std::int64_t next_value_reporting_level_lowest_equivalent_;