X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftally%2Ftally.h;h=e7157175075cb556d2ff7cd5c74d07b95ee3fd3d;hp=1f4b5d5f7576f89673a59ec78a45606ad9220691;hb=d1cea3ebf96f61b5bbac1e74975700770e06add6;hpb=7a36f69eea4ee572bdf191d6048350751cd2ab5b diff --git a/ccan/tally/tally.h b/ccan/tally/tally.h index 1f4b5d5f..e7157175 100644 --- a/ccan/tally/tally.h +++ b/ccan/tally/tally.h @@ -10,9 +10,11 @@ struct tally; * * This allocates a tally structure using malloc(). The greater the value * of @buckets, the more accurate tally_approx_median() and tally_approx_mode() - * and tally_graph() will be, but more memory is consumed. + * and tally_histogram() will be, but more memory is consumed. If you want + * to use tally_histogram(), the optimal bucket value is the same as that + * @height argument. */ -struct tally *tally_new(size_t buckets); +struct tally *tally_new(unsigned int buckets); /** * tally_add - add a value. @@ -51,6 +53,17 @@ ssize_t tally_max(const struct tally *tally); */ ssize_t tally_mean(const struct tally *tally); +/** + * tally_total - the total value passed to tally_add. + * @tally: the tally structure. + * @overflow: the overflow value (or NULL). + * + * If your total can't overflow a ssize_t, you don't need @overflow. + * Otherwise, @overflow is the upper ssize_t, and the return value should + * be treated as the lower size_t (ie. the sign bit is in @overflow). + */ +ssize_t tally_total(const struct tally *tally, ssize_t *overflow); + /** * tally_approx_median - the approximate median value passed to tally_add. * @tally: the tally structure.