From 92a665752945aa7731ad51fa66ecac768064c51e Mon Sep 17 00:00:00 2001 From: Dominik Kaiser Date: Wed, 12 Feb 2025 13:28:42 +0100 Subject: [PATCH] Copy files from ex05 to ex06 --- ex06/Harl.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ ex06/Harl.hpp | 28 ++++++++++++++++++++++++++ ex06/Makefile | 50 ++++++++++++++++++++++++++++++++++++++++++++++ ex06/main.cpp | 24 ++++++++++++++++++++++ 4 files changed, 157 insertions(+) create mode 100644 ex06/Harl.cpp create mode 100644 ex06/Harl.hpp create mode 100644 ex06/Makefile create mode 100644 ex06/main.cpp diff --git a/ex06/Harl.cpp b/ex06/Harl.cpp new file mode 100644 index 0000000..fcad030 --- /dev/null +++ b/ex06/Harl.cpp @@ -0,0 +1,55 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Harl.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser + +void Harl::complain(std::string level) +{ + std::string levels[4] = {"DEBUG", "INFO", "WARNING", "ERROR"}; + void (Harl::*funcs[4])() = {&Harl::debug, + &Harl::info, + &Harl::warning, + &Harl::error}; + for (int i = 0; i < 4; i++) + { + if (level == levels[i]) + (this->*funcs[i])(); + } +} + +void Harl::debug(void) +{ + std::cout << "I love having extra bacon for my "; + std::cout << "7XL-double-cheese-triple-pickle-special-ketchup burger. "; + std::cout << "I really do!" << std::endl; +} + +void Harl::info(void) +{ + std::cout << "I cannot believe adding extra bacon costs more money. "; + std::cout << "You didn’t put enough bacon in my burger! "; + std::cout << "If you did, I wouldn’t be asking for more!" << std::endl; +} + +void Harl::warning(void) +{ + std::cout << "I think I deserve to have some extra bacon for free. "; + std::cout << "I’ve been coming for years whereas you "; + std::cout << "started working here since last month." << std::endl; +} + +void Harl::error(void) +{ + std::cout << "This is unacceptable! I want to speak to the manager now."; + std::cout << std::endl; +} diff --git a/ex06/Harl.hpp b/ex06/Harl.hpp new file mode 100644 index 0000000..ade7f98 --- /dev/null +++ b/ex06/Harl.hpp @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Harl.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser +class Harl +{ + public: + void complain(std::string level); + private: + void debug(void); + void info(void); + void warning(void); + void error(void); +}; + +#endif diff --git a/ex06/Makefile b/ex06/Makefile new file mode 100644 index 0000000..2696d22 --- /dev/null +++ b/ex06/Makefile @@ -0,0 +1,50 @@ +################################################################################ +################################## VARIABLES ################################### +################################################################################ + +NAME := harl + +CC = c++ +CFLAGS = -Wall -Wextra -Werror -std=c++17 +HEADERS = -I. + +SRC := main.cpp Harl.cpp + +OBJ_DIR := _obj +OBJ := $(addprefix $(OBJ_DIR)/, $(SRC:%.cpp=%.o)) + +################################################################################ +#################################### RULES ##################################### +################################################################################ + +all: $(NAME) + +$(NAME): $(OBJ) + @$(CC) $(CFLAGS) $^ -o $@ $(HEADERS) + @echo "[$(NAME)] Created binary." + +$(OBJ_DIR)/%.o: %.cpp + @if [ ! -d "$(dir $@)" ]; then \ + mkdir -p $(dir $@); \ + fi + @$(CC) $(CFLAGS) -c $< -o $@ $(HEADERS) + @echo "[$(NAME)] Compiled $<." + +clean: + @if [ -d "$(OBJ_DIR)" ]; then \ + rm -rf $(OBJ_DIR); \ + echo "[$(NAME)] Removed object files."; \ + fi + +fclean: clean + @if [ -f "$(NAME)" ]; then \ + rm -f $(NAME); \ + echo "[$(NAME)] Removed binary."; \ + fi + +re: fclean all + +.PHONY: all clean fclean re + +################################################################################ +################################################################################ diff --git a/ex06/main.cpp b/ex06/main.cpp new file mode 100644 index 0000000..1180187 --- /dev/null +++ b/ex06/main.cpp @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser