/* Note that we just declare the struct here in order to keep it private. 
 * Users can only create pointers to it by calling our constructor vector_create.
 * Users must themselves remember to call the destructor vector_delete.
 * Users must alwas pass a pointer (this) to the current object as first parameter.
 */
struct vector;

/* Note how the header file only list the public member functions, the ones named vector_ */

struct vector* vector_create(int init_size);

void vector_push_back(struct vector* me, int val);

int vector_at(struct vector* me, int index);

void vector_delete(struct vector* me);