CPP05/ex02/src/PresidentialPardonForm.cpp

53 lines
1.5 KiB
C++

#include "PresidentialPardonForm.hpp"
#include <iostream>
#include <string>
#include "AForm.hpp"
#include "colors.h"
PresidentialPardonForm::PresidentialPardonForm(std::string target)
: AForm("Presidential Pardon", 25, 5), _target(target)
{
std::cout << PRESIDENTIAL_PARDON_FORM PARAMETERIZED_CONSTRUCTOR
<< std::endl;
std::cout << PRESIDENTIAL_PARDON_FORM << *this << std::endl;
}
PresidentialPardonForm::~PresidentialPardonForm()
{
std::cout << PRESIDENTIAL_PARDON_FORM DESTRUCTOR << std::endl;
}
PresidentialPardonForm::PresidentialPardonForm(
const PresidentialPardonForm &other)
: AForm(other), _target(other._target)
{
std::cout << PRESIDENTIAL_PARDON_FORM COPY_CONSTRUCTOR << std::endl;
std::cout << PRESIDENTIAL_PARDON_FORM << *this << std::endl;
}
std::ostream &operator<<(std::ostream &os, const PresidentialPardonForm &form)
{
os << form.getName()
<< " Form: " << (form.getIsSigned() ? "Signed" : "Not Signed")
<< ", Sign Grade: " << form.getSignGrade()
<< ", Execute Grade: " << form.getExecuteGrade()
<< ", Target: " << form.getTarget();
return os;
}
void PresidentialPardonForm::execute(const Bureaucrat &executor) const
{
isExecutable(executor);
std::cout << PRESIDENTIAL_PARDON_FORM << executor.getName()
<< " made shure Zaphod Beeblebrox pardoned " << _target << "."
<< std::endl;
}
const std::string PresidentialPardonForm::getTarget() const
{
return _target;
}