#include "match.h" #include #include struct leg *leg_init(int points, char *name) { struct leg *l = calloc(1, sizeof(*l)); l->name = strdup(name); l->start = l->rem = points; l->size_visits = 16; l->visits = calloc(l->size_visits, sizeof(*(l->visits))); return l; } void leg_free(struct leg *l) { for (int i = 0; i < l->n_visits; ++i) { if (l->visits[i].darts) free(l->visits[i].darts); if (l->visits[i].ccoords) free(l->visits[i].ccoords); } free(l->visits); free(l->name); free(l); } void leg_grow_visits(struct leg *l) { size_t bytes = l->size_visits * sizeof(*(l->visits)); l->size_visits *= 2; l->visits = realloc(l->visits, 2 * bytes); memset((char *)l->visits + bytes, 0, bytes); } bool is_points_valid(int pts, int rem) { return pts <= rem && rem - pts != 1 && pts >= 0 && pts <= 180 && pts != 179 && pts != 178 && pts != 176 && pts != 175 && pts != 173 && pts != 172 && pts != 169 && pts != 166 && pts != 163 && (rem - pts != 0 || (pts <= 170 && pts != 168 && pts != 165 && pts != 162 && pts != 159)); }