/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* Bureaucrat.cpp :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/24 13:06:55 by narnaud #+# #+# */ /* Updated: 2022/06/26 16:00:28 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #include "Bureaucrat.hpp" Bureaucrat::Bureaucrat (void) { cout << "Bureaucrat default constructor called " << endl; } Bureaucrat::Bureaucrat (const string name, int grade) throw (Bureaucrat::GradeTooHighException, Bureaucrat::GradeTooLowException): _name(name){ if (grade < 1) throw Bureaucrat::GradeTooHighException(); if (grade > 150) throw Bureaucrat::GradeTooLowException(); _grade = grade; cout << "Bureaucrat " << _name << " created grade: " << _grade << endl; } Bureaucrat::Bureaucrat (Bureaucrat const & src) { (void)src; cout << "Bureaucrat copy constructor called" << endl; } Bureaucrat & Bureaucrat::operator= (Bureaucrat const & src) { (void)src; cout << "Bureaucrat assignment operator called" << endl; return (*this); } Bureaucrat::~Bureaucrat (void) { cout << "Bureaucrat default destructor called" << endl; } const string Bureaucrat::getName(void) const{ return (_name); } int Bureaucrat::getGrade(void) const{ return (_grade); } void Bureaucrat::incrGrade(int diff) throw (Bureaucrat::GradeTooHighException) { int new_grade = _grade - diff; if (new_grade < 1) throw Bureaucrat::GradeTooHighException(); _grade = new_grade; } void Bureaucrat::decrGrade(int diff) throw (Bureaucrat::GradeTooLowException) { int new_grade = _grade + diff; if (new_grade > 150) throw Bureaucrat::GradeTooLowException(); _grade = new_grade; } const char* Bureaucrat::GradeTooHighException::what(void) const throw() { return ("Grade was too high for a bureaucrat"); } const char* Bureaucrat::GradeTooLowException::what(void) const throw() { return ("Grade was too low for a bureaucrat"); } std::ostream &operator<< (std::ostream &out, Bureaucrat const &b) { out << b.getName() << ", bureaucrat grade " << b.getGrade() << endl; return (out); }