/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* Form.hpp :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/07/19 11:54:09 by apommier #+# #+# */ /* Updated: 2022/07/19 12:52:43 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef FORM_HPP # define FORM_HPP # include # include # include # include "Bureaucrat.hpp" class Bureaucrat; class Form{ public : Form(int signedGrade, int executionGrade, std::string name); Form(const Form& copy); ~Form(); Form &operator=(const Form& rhs); const std::string getName() const; int getSignedGrade() const; int getExecutionGrade() const; int getIsSigned() const; void checkGrade() const; void beSigned(Bureaucrat &bureaucrat); class GradeTooLowException : public std::exception { public : virtual const char* what() const throw() { return ("Signed or Execution grade is too low\n"); } }; class GradeTooHighException : public std::exception { public : virtual const char* what() const throw() { return ("Signed or Execution grade is too high\n"); } }; class signedGradeTooLowException : public std::exception { public : virtual const char* what() const throw() { return ("Signed grade is too low\n"); } }; private : std::string const _name; bool _isSigned; int _signedGrade; int _executionGrade; }; std::ostream &operator<<(std::ostream &out, const Form &form); #endif