--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* Harl.cpp :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2025/02/12 10:37:12 by dkaiser #+# #+# */
+/* Updated: 2025/02/12 11:29:15 by dkaiser ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "Harl.hpp"
+#include <iostream>
+
+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;
+}
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* Harl.hpp :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2025/02/12 10:36:43 by dkaiser #+# #+# */
+/* Updated: 2025/02/12 11:36:33 by dkaiser ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#ifndef HARL_H_
+#define HARL_H_
+
+#include <string>
+class Harl
+{
+ public:
+ void complain(std::string level);
+ private:
+ void debug(void);
+ void info(void);
+ void warning(void);
+ void error(void);
+};
+
+#endif
--- /dev/null
+################################################################################
+################################## 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
+
+################################################################################
+################################################################################
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* main.cpp :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2025/02/12 10:35:53 by dkaiser #+# #+# */
+/* Updated: 2025/02/12 11:35:27 by dkaiser ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "Harl.hpp"
+
+int main(void)
+{
+ Harl harl = Harl();
+
+ harl.complain("DEBUG");
+ harl.complain("INFO");
+ harl.complain("WARNING");
+ harl.complain("ERROR");
+ harl.complain("Invalid Input");
+}