// Lee órdenes de la entrada y las aplica al registro. Se compara con ../tests/driver.cpp.
#include <stdio.h>
#include <string.h>

#include "grade_book.h"

int main(void) {
    GradeBook *book = grade_book_new();
    if (book == NULL) {
        return 1;
    }
    char command[16];
    char name[64];
    int grade;
    while (scanf("%15s", command) == 1) {
        if (strcmp(command, "add") == 0 && scanf("%63s %d", name, &grade) == 2) {
            printf("%d\n", grade_book_add(book, name, grade));
        } else if (strcmp(command, "set") == 0 && scanf("%63s %d", name, &grade) == 2) {
            printf("%d\n", grade_book_set(book, name, grade));
        } else if (strcmp(command, "get") == 0 && scanf("%63s", name) == 1) {
            printf("%d\n", grade_book_get(book, name));
        } else if (strcmp(command, "remove") == 0 && scanf("%63s", name) == 1) {
            printf("%d\n", grade_book_remove(book, name));
        } else if (strcmp(command, "list") == 0) {
            printf("%d:", grade_book_size(book));
            for (int i = 0; i < grade_book_size(book); i++) {
                printf(" %s", grade_book_name_at(book, i));
            }
            printf("\n");
        }
    }
    grade_book_free(book);
    return 0;
}
