94 lines
2.4 KiB
C++
94 lines
2.4 KiB
C++
#include "Intern.hpp"
|
|
|
|
#define COPLIEN_COLOR B_CYAN
|
|
|
|
/*********************************************
|
|
* STATICS
|
|
*********************************************/
|
|
|
|
const t_formModel Intern::_chooseForm[] = {
|
|
{"Shrubbery", Intern::makeShrubbery},
|
|
{"Presidential", Intern::makePresidential},
|
|
{"Robotomy", Intern::makeRobotomy}
|
|
};
|
|
|
|
/*********************************************
|
|
* CONSTRUCTORS
|
|
*********************************************/
|
|
|
|
Intern::Intern() {
|
|
std::cout << COPLIEN_COLOR "Intern constructor" RESET "\n";
|
|
return;
|
|
}
|
|
|
|
Intern::Intern( Intern const & src __attribute__((unused))) {
|
|
std::cout << COPLIEN_COLOR "Intern copy constructor" RESET "\n";
|
|
*this = src;
|
|
return;
|
|
}
|
|
|
|
/*********************************************
|
|
* DESTRUCTORS
|
|
*********************************************/
|
|
|
|
Intern::~Intern() {
|
|
std::cout << COPLIEN_COLOR "Intern destructor" RESET "\n";
|
|
return;
|
|
}
|
|
|
|
/*********************************************
|
|
* OPERATORS
|
|
*********************************************/
|
|
|
|
Intern & Intern::operator=( Intern const & rhs __attribute__((unused))) {
|
|
return *this;
|
|
}
|
|
|
|
//std::ostream & operator<<(std::ostream & o, Intern const & rhs)
|
|
//{
|
|
// o << rhs.getFoo();
|
|
// return (o);
|
|
//}
|
|
|
|
/*********************************************
|
|
* ACCESSORS
|
|
*********************************************/
|
|
|
|
//std::string Intern::getFoo() const {return _foo;}
|
|
|
|
/*********************************************
|
|
* PRIVATE MEMBER FUNCTIONS
|
|
*********************************************/
|
|
|
|
AForm * Intern::makeForm(std::string formName, std::string formTarget) const {
|
|
unsigned int len = sizeof _chooseForm / sizeof _chooseForm[0];
|
|
|
|
for (unsigned int i = 0; i < len; i++)
|
|
if (!formName.compare(_chooseForm[i].name))
|
|
{
|
|
std::cout << "Intern creates " << formName << "\n";
|
|
return _chooseForm[i].create(formTarget);
|
|
}
|
|
std::cout << "Intern cannot create " << formName << "\n";
|
|
return NULL;
|
|
}
|
|
|
|
/*********************************************
|
|
* PUBLIC MEMBER FUNCTIONS
|
|
*********************************************/
|
|
|
|
AForm * Intern::makeShrubbery(std::string const &target) {
|
|
return new ShrubberyCreationForm(target);}
|
|
AForm * Intern::makePresidential(std::string const &target) {
|
|
return new PresidentialPardonForm(target);}
|
|
AForm * Intern::makeRobotomy(std::string const &target) {
|
|
return new RobotomyRequestForm(target);}
|
|
|
|
/*********************************************
|
|
* NESTED CLASS
|
|
*********************************************/
|
|
|
|
//void Intern::Class::function() {}
|
|
|
|
|