Program Listing for File exception.hpp¶
↰ Return to documentation for file (/home/runner/work/Legion-Engine/Legion-Engine/legion/engine/core/common/exception.hpp
)
#pragma once
#include <exception>
#include <core/types/primitives.hpp>
#include <core/platform/platform.hpp>
#define legion_exception legion::core::exception(__FILE__, __LINE__, __FUNC__)
#define legion_exception_msg(msg) legion::core::exception(msg, __FILE__, __LINE__, __FUNC__)
#pragma region fetch
#define legion_invalid_fetch_error legion::core::invalid_fetch_error(__FILE__, __LINE__, __FUNC__)
#define legion_invalid_fetch_msg(msg) legion::core::invalid_fetch_error(msg, __FILE__, __LINE__, __FUNC__)
#define legion_invalid_component_error legion::core::invalid_component_error(__FILE__, __LINE__, __FUNC__)
#define legion_invalid_component_msg(msg) legion::core::invalid_component_error(msg, __FILE__, __LINE__, __FUNC__)
#define legion_component_destroyed_error legion::core::component_destroyed_error(__FILE__, __LINE__, __FUNC__)
#define legion_component_destroyed_msg(msg) legion::core::component_destroyed_error(msg, __FILE__, __LINE__, __FUNC__)
#define legion_invalid_entity_error legion::core::invalid_entity_error(__FILE__, __LINE__, __FUNC__)
#define legion_invalid_entity_msg(msg) legion::core::invalid_entity_error(msg, __FILE__, __LINE__, __FUNC__)
#define legion_entity_not_found_error legion::core::entity_not_found_error(__FILE__, __LINE__, __FUNC__)
#define legion_entity_not_found_msg(msg) legion::core::entity_not_found_error(msg, __FILE__, __LINE__, __FUNC__)
#pragma endregion
#pragma region creation
#define legion_invalid_creation_error legion::core::invalid_creation_error(__FILE__, __LINE__, __FUNC__)
#define legion_invalid_creation_msg(msg) legion::core::invalid_creation_error(msg, __FILE__, __LINE__, __FUNC__)
#define legion_entity_exists_error legion::core::entity_exists_error(__FILE__, __LINE__, __FUNC__)
#define legion_entity_exists_msg(msg) legion::core::entity_exists_error(msg, __FILE__, __LINE__, __FUNC__)
#define legion_component_exists_error legion::core::component_exists_error(__FILE__, __LINE__, __FUNC__)
#define legion_component_exists_msg(msg) legion::core::component_exists_error(msg, __FILE__, __LINE__, __FUNC__)
#pragma endregion
#pragma region type
#define legion_invalid_type_error legion::core::invalid_type_error(__FILE__, __LINE__, __FUNC__)
#define legion_invalid_type_msg(msg) legion::core::invalid_type_error(msg, __FILE__, __LINE__, __FUNC__)
#define legion_unknown_component_error legion::core::unknown_component_error(__FILE__, __LINE__, __FUNC__)
#define legion_unknown_component_msg(msg) legion::core::unknown_component_error(msg, __FILE__, __LINE__, __FUNC__)
#define legion_unknown_system_error legion::core::unknown_system_error(__FILE__, __LINE__, __FUNC__)
#define legion_unknown_system_msg(msg) legion::core::unknown_system_error(msg, __FILE__, __LINE__, __FUNC__)
#define legion_fs_error(msg) legion::core::fs_error(msg,__FILE__,__LINE__,__FUNC__)
#pragma endregion
namespace legion::core
{
class exception : public std::exception
{
private:
cstring m_file;
uint m_line;
cstring m_func;
cstring m_message;
public:
exception(cstring file, uint line, cstring func) : std::exception(), m_file(file), m_line(line), m_func(func), m_message("Args generic exception occurred.") {}
exception(cstring msg, cstring file, uint line, cstring func) : std::exception(), m_file(file), m_line(line), m_func(func), m_message(msg) {}
virtual cstring what() const noexcept override { return m_message; }
cstring file() const noexcept { return m_file; }
uint line() const noexcept { return m_line; }
cstring func() const noexcept { return m_func; }
};
#pragma region invalid fetch
class invalid_fetch_error : public exception
{
public:
invalid_fetch_error(cstring file, uint line, cstring func) : exception("Invalid fetch occurred.", file, line, func) {}
invalid_fetch_error(cstring msg, cstring file, uint line, cstring func) : exception(msg, file, line, func) {}
};
class invalid_component_error : public invalid_fetch_error
{
public:
invalid_component_error(cstring file, uint line, cstring func) : invalid_fetch_error("Component invalid.", file, line, func) {}
invalid_component_error(cstring msg, cstring file, uint line, cstring func) : invalid_fetch_error(msg, file, line, func) {}
};
class component_destroyed_error : public invalid_component_error
{
public:
component_destroyed_error(cstring file, uint line, cstring func) : invalid_component_error("Component no longer exists.", file, line, func) {}
component_destroyed_error(cstring msg, cstring file, uint line, cstring func) : invalid_component_error(msg, file, line, func) {}
};
class invalid_entity_error : public invalid_fetch_error
{
public:
invalid_entity_error(cstring file, uint line, cstring func) : invalid_fetch_error("Entity invalid.", file, line, func) {}
invalid_entity_error(cstring msg, cstring file, uint line, cstring func) : invalid_fetch_error(msg, file, line, func) {}
};
class entity_not_found_error : public invalid_entity_error
{
public:
entity_not_found_error(cstring file, uint line, cstring func) : invalid_entity_error("Entity does not exist.", file, line, func) {}
entity_not_found_error(cstring msg, cstring file, uint line, cstring func) : invalid_entity_error(msg, file, line, func) {}
};
#pragma endregion
#pragma region invalid creation
class invalid_creation_error : public exception
{
public:
invalid_creation_error(cstring file, uint line, cstring func) : exception("Creation invalid.", file, line, func) {}
invalid_creation_error(cstring msg, cstring file, uint line, cstring func) : exception(msg, file, line, func) {}
};
class entity_exists_error : public invalid_creation_error
{
public:
entity_exists_error(cstring file, uint line, cstring func) : invalid_creation_error("Entity already exist.", file, line, func) {}
entity_exists_error(cstring msg, cstring file, uint line, cstring func) : invalid_creation_error(msg, file, line, func) {}
};
class component_exists_error : public invalid_creation_error
{
public:
component_exists_error(cstring file, uint line, cstring func) : invalid_creation_error("Component already exist.", file, line, func) {}
component_exists_error(cstring msg, cstring file, uint line, cstring func) : invalid_creation_error(msg, file, line, func) {}
};
#pragma endregion
#pragma region invalid type
class invalid_type_error : public exception
{
public:
invalid_type_error(cstring file, uint line, cstring func) : exception("Type invalid.", file, line, func) {}
invalid_type_error(cstring msg, cstring file, uint line, cstring func) : exception(msg, file, line, func) {}
};
class unknown_component_error : public invalid_type_error
{
public:
unknown_component_error(cstring file, uint line, cstring func) : invalid_type_error("Unknown component type.", file, line, func) {}
unknown_component_error(cstring msg, cstring file, uint line, cstring func) : invalid_type_error(msg, file, line, func) {}
};
class unknown_system_error : public invalid_type_error
{
public:
unknown_system_error(cstring file, uint line, cstring func) : invalid_type_error("Unknown system type.", file, line, func) {}
unknown_system_error(cstring msg, cstring file, uint line, cstring func) : invalid_type_error(msg, file, line, func) {}
};
#pragma endregion
#pragma region filesystem
class fs_error : public exception
{
public:
fs_error(cstring file,uint line,cstring func) : exception("Filesystem Adapter failed", file,line,func) {}
fs_error(cstring msg,cstring file,uint line,cstring func) : exception(msg,file,line,func) {}
};
#pragma endregion
}