struct ITimetableDataSource { virtual ~ITimetableDataSource() {} virtual istream& get_reader(const string& key) = 0; };
An abstraction of a "data store" from which course timetable data can be read. The interface for reading is to get an istream corresponding to a given "key". The most obvious implementation is a filesystem, with the streams being file streams, and the keys being filenames.
See also: LoadTimetableData()