/*
 * course.cpp
 *
 * Implementation of the Course class. See header file for function
 * descriptions.
 * 
 * Note to CS70 students: this is an incomplete source file.  You must
 * complete it as you feel appropriate.  Search for "ADD STUFF" to
 * find places you *MAY* need to change.
 *
 * Note that many comments are missing.  We have not provided "ADD
 * STUFF" hints for missing comments.
 */

#include "course.hpp"
#include "student.hpp"

#include <cstddef>
#include <iostream>
#include <string>
using namespace std;


Course::Course()
    : department_(),
      courseNumber_(0),
      meetingTime_(),
      enrollment_(0),
      maxEnrollment_(0),
      roster_(NULL)
{
    // ADD STUFF (PSEUDOCODE NOT NEEDED)
}


Course::~Course()
{
    /*
     * Before deleting the course, we must deenroll all students.
     */
    kickOutStudents();
    // ADD PSEUDOCODE
}

void Course::fillInInfo(
    const string&       department,
    int                 courseNumber,
    const string&       meetingTime,
    int                 maxEnrollment)
{
    // ADD PSEUDOCODE
}

bool Course::isFull()
    const
{
    // ADD PSEUDOCODE
    return true;			// Dummy code as placeholder.
}

bool Course::isSameAs(
    const string&       testDepartment,
    int                 testNumber)
    const
{
    // ADD PSEUDOCODE
    return true;			// Dummy code as placeholder.
}

bool Course::addStudent(Student* enrollee)
{
    // ADD PSEUDOCODE
    return false;			// Dummy code as placeholder.
}

bool Course::removeStudent(
    Student*            dropper)        // Student who is dropping the course
{
    // ADD PSEUDOCODE
    return false;			// Dummy code as placeholder.
}

void Course::changeMeetingTime(
    const string&       newMeetingTime)
{
    // ADD STUFF (PSEUDOCODE NOT NEEDED)
}

ostream& Course::showName(
    ostream&            out)
    const
{
    // ADD STUFF (PSEUDOCODE NOT NEEDED)
    return out;
}

ostream& Course::print(
    ostream&            out)
    const
{
    // ADD PSEUDOCODE
    return out;
}

void Course::kickOutStudents()          // Deenroll all students
{
    // ADD PSEUDOCODE
}


/* Junk to make emacs use the right C++ style when editing this code:
 *   Local Variables:
 *   c-file-style: "stroustrup"
 *   End:
 */
