// Tally que no guarda los valores: solo lleva el resumen.
#include "tally.h"

#include <stdlib.h>

struct tally {
    int count;
    int sum;
    int max;
};

Tally *tally_new(void) {
    Tally *tally = malloc(sizeof(*tally));
    if (tally == NULL) {
        return NULL;
    }

    tally->count = 0;
    tally->sum = 0;
    tally->max = 0;
    return tally;
}

void tally_free(Tally *tally) {
    free(tally);
}

int tally_add(Tally *tally, int value) {
    if (tally->count == 0 || value > tally->max) {
        tally->max = value;
    }
    tally->count++;
    tally->sum += value;
    return 1;
}

int tally_count(const Tally *tally) {
    return tally->count;
}

int tally_sum(const Tally *tally) {
    return tally->sum;
}

int tally_max(const Tally *tally) {
    return tally->max;
}
