#ifndef __PROCESSOR_EXCEPTION_HPP__
#define __PROCESSOR_EXCEPTION_HPP__

#include <string>
#include <exception>

#define EXC_MSG(code)		(std::string(__PRETTY_FUNCTION__) + ", line " + std::to_string(__LINE__) + ", code " + std::to_string(code))
#define EXC_EXCEPT(code)	throw Exception(EXC_MSG(code))

class Exception : public std::exception
{
	std::string m_msg;
	
	public:
	Exception(std::string msg)
	: std::exception()
	, m_msg(msg)
	{

	}
	const char* what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW
	{
		return m_msg.c_str();
	}

};

#endif // __PROCESSOR_EXCEPTION_HPP__
