#include<adder.h>
#include<stdlib.h>

struct _Adder {
    int number;
};

adder* adder_create(int number) {
    adder *a = malloc(sizeof(struct _Adder));
    a->number = number;
    return a;
}

// adder_add_r is implemented in the Rust file.
int adder_add_r(adder *a, int number);

int adder_add(adder *a, int number)
{
    return adder_add_r(a, number);
}

void adder_destroy(adder *a) {
    free(a);
}
