/* PROFILING
 * We define marks in this enum,
 * which are used to let the start
 * and stop timing functions keep
 * track of what is measured.
 */

extern enum TimeMarks {
	CPU_SOLVER,
        CPU_MAIN,
	CPU_LASTENTRY		/* Keep this entry at the end */
} mark;

extern struct Timings {
	double Zero;		/* Absolute Zeropoint */
	double Total[CPU_LASTENTRY];	/* Total Time for mark */
	double Start[CPU_LASTENTRY];	/* Start time for mark */
} Cpu;

void init_timing();
void finish_timing();
void start_timing(enum TimeMarks mark);
void stop_timing(enum TimeMarks mark);
double get_current_time();

