#include "ins_rec.h" InsRecord :: InsRecord () : name(), time_list(), scheduled_times(), course_list(), wtu(0), min_wtu(0), max_wtu(0), handicap_flag(FALSE), picky_rank(0) { view = new InsUI(this); } InsRecord :: InsRecord (const InsName& i) : name(i), time_list(), scheduled_times(), course_list(), wtu(0), min_wtu(0), max_wtu(0), handicap_flag(FALSE), picky_rank(0) {} InsRecord :: InsRecord (const InsRecord& i) : name(i.name), time_list(i.time_list), scheduled_times(i.scheduled_times), course_list(i.course_list), wtu(i.wtu), min_wtu(i.min_wtu), max_wtu(i.max_wtu), handicap_flag(i.handicap_flag), picky_rank(i.picky_rank) {} InsRecord :: InsRecord (char* stream) : name(), time_list(), scheduled_times(), course_list(), wtu(0), min_wtu(0), max_wtu(0), handicap_flag(FALSE), picky_rank(0) { char lname[20], fname[20] ; sscanf(stream, "%i %i %s %s", &min_wtu, &max_wtu, lname, fname); if (lname[strlen(lname)-1] == ',') lname[strlen(lname)-1] = '\0'; name = InsName(lname, fname); } InsRecord :: ~InsRecord () {} void InsRecord :: AddCoursePref (CourseID id, int weight) { InsCoursePref icp(id, weight) ; course_list.Add(icp); } void InsRecord :: AddTimePref (char* days, float beg, float end, int wght) { TimePref itp(days, beg, end, wght) ; time_list.Add(itp); } InsCourseList& InsRecord :: GetCourseList () { return course_list; } TimeList& InsRecord :: GetTimeList () { return time_list; } InsName& InsRecord :: GetName () { return name; } Boolean InsRecord :: HasMinWTUs () { return (wtu > min_wtu); } Boolean InsRecord :: HasMaxWTUs () { return (wtu > max_wtu); } void InsRecord :: SetPickyRank () { picky_rank = time_list.TotalHours(); } float InsRecord :: GetPickyRank () { return picky_rank; } void InsRecord :: SortCoursePrefs () { course_list.SortByWeight(); } void InsRecord :: SortTimePrefs () { time_list.SortByWeight(); } void InsRecord :: operator= (const InsRecord& ir) { name = ir.name; time_list = ir.time_list; course_list = ir.course_list; scheduled_times = ir.scheduled_times; wtu = ir.wtu; min_wtu = ir.min_wtu; max_wtu = ir.max_wtu; handicap_flag = ir.handicap_flag; picky_rank = ir.picky_rank; } void InsRecord :: sout (ostream&) {} void InsRecord :: print () const { name.print(); time_list.print(); course_list.print(); printf("%d %d %d %f\n", wtu, min_wtu, max_wtu, picky_rank); } Node* InsRecord :: copy() const { return new InsRecord(*this); }