🎉」 init: hello world !

This commit is contained in:
2025-08-02 13:51:40 +02:00
commit 224ed0cf99
44 changed files with 2108 additions and 0 deletions

95
ex00/Bureaucrat.cpp Normal file
View File

@@ -0,0 +1,95 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* Bureaucrat.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: mmoussou <mmoussou@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/06/18 20:11:39 by mmoussou #+# #+# */
/* Updated: 2025/06/27 13:35:28 by mmoussou ### ########.fr */
/* */
/* ************************************************************************** */
#include "Bureaucrat.hpp"
#include <exception>
void _log(std::string emoji, std::string what, std::string who, std::string str)
{
#ifdef VERBOSE
if (who.empty())
std::cout << "" << emoji << "" << what << ": " << str << std::endl;
else
std::cout << "" << emoji << "" << what << "(" << who << "): " << str
<< std::endl;
#else
(void)emoji, (void)what, (void)who, (void)str;
#endif
}
Bureaucrat::Bureaucrat(void)
: _name("kanel"), _grade(69)
{
_log("", "Bureaucrat", "", "default constructor called");
}
Bureaucrat::Bureaucrat(const Bureaucrat &cpy)
{
_log("", "Bureaucrat", "", "copy constructor called");
if (&cpy != this)
{
_name = cpy.getName();
_grade = cpy.getGrade();
}
}
Bureaucrat::Bureaucrat(std::string name, uint8_t grade)
: _name(name), _grade(grade)
{
_log("", "Bureaucrat", "", "constructor called");
}
const std::string &Bureaucrat::getName(void) const { return _name; }
uint8_t Bureaucrat::getGrade(void) const { return _grade; }
Bureaucrat::~Bureaucrat(void)
{
_log("", "Bureaucrat", "", "destructor called");
}
Bureaucrat &Bureaucrat::operator=(Bureaucrat const &cpy)
{
if (&cpy == this)
return *this;
_grade = cpy._grade;
return *this;
}
void Bureaucrat::IncrementGrade(void)
{
if (_grade - 1 < MAXGRADE)
throw GradeTooHighException();
_grade--;
}
void Bureaucrat::DecrementGrade(void)
{
if (_grade + 1 > MINGRADE)
throw GradeTooLowException();
_grade++;
}
std::ostream &operator<<(std::ostream &os, Bureaucrat &val)
{
os << val.getName() << ", bureaucrat grade " << (int)val.getGrade();
return os;
}
const char *Bureaucrat::GradeTooHighException::what() const throw()
{
return ("Grade is too high");
}
const char *Bureaucrat::GradeTooLowException::what() const throw()
{
return ("Grade is too low");
}