/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* Form.cpp :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/26 16:12:05 by narnaud #+# #+# */ /* Updated: 2022/06/27 09:40:11 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #include "Form.hpp" std::ostream &operator<< (std::ostream &out, const Form &f) { out << "Form: " << f.getName() << " - Required grade to sign: " << f.getSignGrade() << " - Required grade to execute: " << f.getExeGrade() << endl; return (out); }; /* Defaults */ Form & Form::operator=(Form const &f) { (void)f; cout << "Form assignement called" << endl; return (*this); } Form::Form(Form const &f) { (void)f; cout << "Form copy called" << endl; } Form::~Form(void) { cout << "Form desctructor called" << endl; } /* Custom constructor */ Form::Form(const string name, int signGrade, int exeGrade) throw (Form::GradeTooHighException, Form::GradeTooLowException): _name(name){ if (signGrade < 1 || exeGrade < 1) throw Form::GradeTooHighException(); if (signGrade > 150 || exeGrade > 150) throw Form::GradeTooLowException(); _signGrade = signGrade; _exeGrade = exeGrade; } /* Getters */ const string Form::getName(void) const { return (_name); } int Form::getSignGrade(void) const { return (_signGrade); } int Form::getExeGrade(void) const { return (_exeGrade); } /* Seter */ bool Form::beSigned(const Bureaucrat &b) throw (Form::GradeTooLowException) { if (_isSigned) return (1); if (b.getGrade() > _signGrade) throw GradeTooLowException(); _isSigned = 1; return (0); } /* Except */ const char *Form::GradeTooHighException::what(void) const throw (){ return ("Grade was too high for a form"); } const char *Form::GradeTooLowException::what(void) const throw (){ return ("Grade was too low for a form"); }