#ifndef __PROGRAM_H__
#define __PROGRAM_H__

void setup_board();
void apply_rules();
State get_cell(int row, int col);
void set_result_cell(int row, int col, State state);
int count_neighbors(int row, int col);
void copy_result_back();

// Helpers
int state_to_int(State state);

// Drawing
void draw_board(Canvas* c);
void draw_cell(Canvas* c, int row, int col);

// Templates
void set_cell(int row, int col, State state);
void set_alive(int row, int col);
void place_blinker(int row, int col);
void place_glider(int row, int col);

#endif
