#ifndef CLOGICEXCEPTION_HPP
#define CLOGICEXCEPTION_HPP

#include "CException.hpp"

#include <exception>
#include <string>

/**
 * @file CLogicException.hpp
 * @brief File of CLogicException, a class to handle program logic exception, it's mean error caused by bad use of function/class by user.
 */

/**
 * @def LOGIC_EXC_CODE default code for this kind of Exception.
 */
#define LOGIC_EXC_CODE 1

/**
 * @brief Class to handle program file exception.
 */
class CLogicException : public CException {

private:

public:
	/**
	 * @brief The default constructor, build a exception with default message : "A logic error occurred" and the code LOGIC_EXC_CODE.
	 */
	CLogicException(void) noexcept;

	/**
	 * @brief The usage constructor, build a exception with a given message and the code LOGIC_EXC_CODE.
	 * @param[in] message The wanted message.
	 */
	CLogicException(const std::string message) noexcept;

};

#endif