goud_engine/core/error/
methods.rs1use super::codes::*;
4use super::types::GoudError;
5
6impl GoudError {
7 #[inline]
25 pub const fn error_code(&self) -> GoudErrorCode {
26 match self {
27 GoudError::NotInitialized => ERR_NOT_INITIALIZED,
29 GoudError::AlreadyInitialized => ERR_ALREADY_INITIALIZED,
30 GoudError::InvalidContext => ERR_INVALID_CONTEXT,
31 GoudError::ContextDestroyed => ERR_CONTEXT_DESTROYED,
32 GoudError::InitializationFailed(_) => ERR_INITIALIZATION_FAILED,
33
34 GoudError::ResourceNotFound(_) => ERR_RESOURCE_NOT_FOUND,
36 GoudError::ResourceLoadFailed(_) => ERR_RESOURCE_LOAD_FAILED,
37 GoudError::ResourceInvalidFormat(_) => ERR_RESOURCE_INVALID_FORMAT,
38 GoudError::ResourceAlreadyExists(_) => ERR_RESOURCE_ALREADY_EXISTS,
39 GoudError::InvalidHandle => ERR_INVALID_HANDLE,
40 GoudError::HandleExpired => ERR_HANDLE_EXPIRED,
41 GoudError::HandleTypeMismatch => ERR_HANDLE_TYPE_MISMATCH,
42
43 GoudError::ShaderCompilationFailed(_) => ERR_SHADER_COMPILATION_FAILED,
45 GoudError::ShaderLinkFailed(_) => ERR_SHADER_LINK_FAILED,
46 GoudError::TextureCreationFailed(_) => ERR_TEXTURE_CREATION_FAILED,
47 GoudError::BufferCreationFailed(_) => ERR_BUFFER_CREATION_FAILED,
48 GoudError::RenderTargetFailed(_) => ERR_RENDER_TARGET_FAILED,
49 GoudError::BackendNotSupported(_) => ERR_BACKEND_NOT_SUPPORTED,
50 GoudError::DrawCallFailed(_) => ERR_DRAW_CALL_FAILED,
51
52 GoudError::EntityNotFound => ERR_ENTITY_NOT_FOUND,
54 GoudError::EntityAlreadyExists => ERR_ENTITY_ALREADY_EXISTS,
55 GoudError::ComponentNotFound => ERR_COMPONENT_NOT_FOUND,
56 GoudError::ComponentAlreadyExists => ERR_COMPONENT_ALREADY_EXISTS,
57 GoudError::QueryFailed(_) => ERR_QUERY_FAILED,
58
59 GoudError::InputDeviceNotFound => ERR_INPUT_DEVICE_NOT_FOUND,
61 GoudError::InvalidInputAction(_) => ERR_INVALID_INPUT_ACTION,
62
63 GoudError::WindowCreationFailed(_) => ERR_WINDOW_CREATION_FAILED,
65 GoudError::AudioInitFailed(_) => ERR_AUDIO_INIT_FAILED,
66 GoudError::PhysicsInitFailed(_) => ERR_PHYSICS_INIT_FAILED,
67 GoudError::PlatformError(_) => ERR_PLATFORM_ERROR,
68
69 GoudError::ProviderError { .. } => ERR_PROVIDER_OPERATION_FAILED,
71
72 GoudError::InternalError(_) => ERR_INTERNAL_ERROR,
74 GoudError::NotImplemented(_) => ERR_NOT_IMPLEMENTED,
75 GoudError::InvalidState(_) => ERR_INVALID_STATE,
76 }
77 }
78
79 #[inline]
91 pub const fn category(&self) -> &'static str {
92 error_category(self.error_code())
93 }
94
95 pub fn message(&self) -> &str {
112 match self {
113 GoudError::NotInitialized => "Engine has not been initialized",
115 GoudError::AlreadyInitialized => "Engine has already been initialized",
116 GoudError::InvalidContext => "Invalid engine context",
117 GoudError::ContextDestroyed => "Engine context has been destroyed",
118 GoudError::InitializationFailed(msg) => msg,
119
120 GoudError::ResourceNotFound(msg) => msg,
122 GoudError::ResourceLoadFailed(msg) => msg,
123 GoudError::ResourceInvalidFormat(msg) => msg,
124 GoudError::ResourceAlreadyExists(msg) => msg,
125 GoudError::InvalidHandle => "Invalid handle",
126 GoudError::HandleExpired => "Handle has expired",
127 GoudError::HandleTypeMismatch => "Handle type mismatch",
128
129 GoudError::ShaderCompilationFailed(msg) => msg,
131 GoudError::ShaderLinkFailed(msg) => msg,
132 GoudError::TextureCreationFailed(msg) => msg,
133 GoudError::BufferCreationFailed(msg) => msg,
134 GoudError::RenderTargetFailed(msg) => msg,
135 GoudError::BackendNotSupported(msg) => msg,
136 GoudError::DrawCallFailed(msg) => msg,
137
138 GoudError::EntityNotFound => "Entity not found",
140 GoudError::EntityAlreadyExists => "Entity already exists",
141 GoudError::ComponentNotFound => "Component not found",
142 GoudError::ComponentAlreadyExists => "Component already exists",
143 GoudError::QueryFailed(msg) => msg,
144
145 GoudError::InputDeviceNotFound => "Input device not found",
147 GoudError::InvalidInputAction(msg) => msg,
148
149 GoudError::WindowCreationFailed(msg) => msg,
151 GoudError::AudioInitFailed(msg) => msg,
152 GoudError::PhysicsInitFailed(msg) => msg,
153 GoudError::PlatformError(msg) => msg,
154
155 GoudError::ProviderError { message, .. } => message,
157
158 GoudError::InternalError(msg) => msg,
160 GoudError::NotImplemented(msg) => msg,
161 GoudError::InvalidState(msg) => msg,
162 }
163 }
164}