map<timetable_sort_criterion, string> GetTimetableSortCriteria(bool has_alternate_timeslots);
Get the possible criteria by which a timetable can be sorted. Each criterion
is represented by an identifier of type timetable_sort_criterion
,
and a user-facing string that describes the criterion. Clients should show
the user the list of user-facing strings, have the user select some criteria,
and pass in the identifiers of the selected criteria to SortTimetables
.
Since one of the criteria is "balance between 'week 1' and 'week 2'" which only applies to timetables with alternate-week labs, one must pass in whether or not the timetables to be sorted have alternate-week labs, and this criterion will be part of the returned list, or not, accordingly.