From 452e6bfa7bb4bca75dc4659bf9d707101b411977 Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Tue, 17 Nov 2020 19:02:35 +0100 Subject: Added cpp05/ex02 main, Added cpp05/ex03 --- cpp05/ex03/Intern.cpp | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'cpp05/ex03/Intern.cpp') diff --git a/cpp05/ex03/Intern.cpp b/cpp05/ex03/Intern.cpp index bb3e188..3328957 100644 --- a/cpp05/ex03/Intern.cpp +++ b/cpp05/ex03/Intern.cpp @@ -6,18 +6,37 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/11/17 13:41:09 by cacharle #+# #+# */ -/* Updated: 2020/11/17 13:48:01 by cacharle ### ########.fr */ +/* Updated: 2020/11/17 18:08:56 by charles ### ########.fr */ /* */ /* ************************************************************************** */ #include "Intern.hpp" Intern::Intern() {} -Intern::Intern(const Intern& other) {} -Intern& Intern::operator=(const Intern& other) {} +Intern::Intern(const Intern& other) { (void)other; } +Intern& Intern::operator=(const Intern& other) { (void)other; return *this; } Intern::~Intern() {} -Form *Intern::makeForm(std::string const& name, std::string const& target) +Form *Intern::makeShrubberyCreationForm(std::string const& target) + { return new ShrubberyCreationForm(target); } + +Form *Intern::makePresidentialPardonForm(std::string const& target) + { return new PresidentialPardonForm(target); } + +Form *Intern::makeRobotomyRequestForm(std::string const& target) + { return new RobotomyRequestForm(target); } + +Intern::makeFormEntry Intern::makeFormDispatch[] = { + {"shrubbery creation", &Intern::makeShrubberyCreationForm}, + {"presidential pardon", &Intern::makePresidentialPardonForm}, + {"robotomy request", &Intern::makeRobotomyRequestForm}, +}; +Form *Intern::makeForm(std::string const& name, std::string const& target) +{ + for (size_t i = 0; i < sizeof(Intern::makeFormDispatch) / sizeof(Intern::makeFormEntry); i++) + if ((this->makeFormDispatch[i]).name == name) + return (this->*(makeFormDispatch[i].func))(target); + return NULL; } -- cgit