rotagen/rotagen.h

42 lines
844 B
C

#ifndef ROTAGEN_H
#define ROTAGEN_H
#include <stdbool.h>
#define MAX_JOBS 8
enum constraint_type {
JOB_EXEMPTION_CONSTRAINT,
SLOT_EXEMPTION_CONSTRAINT,
};
struct constraint {
int person;
enum constraint_type type;
union {
int job; /* Job constraints */
int slot; /* Slot constraints */
} object;
};
struct assignment {
int person;
int job;
int slot;
};
struct slot_result {
struct assignment assignments[MAX_JOBS];
};
void generate_rota(struct slot_result *rota_out);
void generate_assignment(int slot, int job, struct assignment *assignment_out);
bool satisfies_assignment_constraints(const struct assignment *assignment);
bool previously_allocated(int previous_assignments[MAX_JOBS], int person);
bool satisfies_slot_constraints(const struct slot_result *slot);
void print_rota(const struct slot_result *rota);
#endif