aboutsummaryrefslogtreecommitdiff
path: root/stack.h
blob: 2105c7c8a0dd09d0d9bdc7336f0d92b350fb78b7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef STACK_H_
#define STACK_H_

#include <stddef.h>
#include "structs.h"

#define STACK_INITIAL_CAPACITY 4096
#define STACK_SIZE_COEFFICIENT 2

struct PositionStack_s {
    Position *arr; /* The array with all the values */
    size_t capacity;
    size_t top; /* Shows where the top of the stack is */
};
typedef struct PositionStack_s PositionStack;

PositionStack ps_new(void); /* Returns an empty position stack */
int ps_push(PositionStack *ps, Position pos); /* Returns -1 if failed to realloc() */
Position ps_pop(PositionStack *ps);
Position ps_peek(PositionStack ps);
void ps_free(PositionStack ps);

#endif /* STACK_H_ */