#ifndef __DYNARRAY_H_
#define __DYNARRAY_H_

#include <stdio.h>
#include <stdlib.h>

size_t _default_cap = 7;
size_t _inc_factor = 2; // Double the size on reallocation

struct dynarray {
    int* data;
    size_t capacity; /// Maximal number of elements
    size_t size; /// Next cell index to write, number of elements
};

typedef struct dynarray dynarray;

dynarray* init();

int empty(dynarray*); /// True if array is empty
void pp(dynarray*);

/// Accessors
int at(dynarray*, size_t);
int front(dynarray*); /// Returns first element
int back(dynarray*); /// Returns last element

/// Modifiers
void push_back(dynarray*, int);
int pop_back(dynarray*); /// Delete last element and return it

void clear(dynarray*);


#endif // __DYNARRAY_H_
