Closes #2071, redesigning the error description fn

This commit is contained in:
Buğra Kadirhan 2022-04-04 00:42:22 +03:00
parent 7a8a959ea8
commit cf57fc7ba3
2 changed files with 40 additions and 45 deletions

View File

@ -2367,7 +2367,9 @@ GLFWAPI int glfwGetError(const char** description);
/*! @brief Returns the description for a specific error code. /*! @brief Returns the description for a specific error code.
* *
* @param[in] code The error code whose description is requested. * @param[in] code The error code whose description is requested.
* @return The error description pointer belonging to specified error code, or NULL if error code is not found. * @param[out] description The buffer which will store the contents of the description.
* @param[in] descriptionSize The size of the buffer in bytes.
* @return Nothing.
* *
* @errors None. * @errors None.
* *
@ -2385,7 +2387,7 @@ GLFWAPI int glfwGetError(const char** description);
* *
* @ingroup init * @ingroup init
*/ */
GLFWAPI const char* glfwGetErrorDescription(int code); GLFWAPI void glfwGetErrorDescription(int code, char *description, int descriptionSize);
/*! @brief Sets the error callback. /*! @brief Sets the error callback.
* *

View File

@ -290,36 +290,7 @@ void _glfwInputError(int code, const char* format, ...)
} }
else else
{ {
if (code == GLFW_NOT_INITIALIZED) glfwGetErrorDescription(code, description, sizeof(description));
strcpy(description, "The GLFW library is not initialized");
else if (code == GLFW_NO_CURRENT_CONTEXT)
strcpy(description, "There is no current context");
else if (code == GLFW_INVALID_ENUM)
strcpy(description, "Invalid argument for enum parameter");
else if (code == GLFW_INVALID_VALUE)
strcpy(description, "Invalid value for parameter");
else if (code == GLFW_OUT_OF_MEMORY)
strcpy(description, "Out of memory");
else if (code == GLFW_API_UNAVAILABLE)
strcpy(description, "The requested API is unavailable");
else if (code == GLFW_VERSION_UNAVAILABLE)
strcpy(description, "The requested API version is unavailable");
else if (code == GLFW_PLATFORM_ERROR)
strcpy(description, "A platform-specific error occurred");
else if (code == GLFW_FORMAT_UNAVAILABLE)
strcpy(description, "The requested format is unavailable");
else if (code == GLFW_NO_WINDOW_CONTEXT)
strcpy(description, "The specified window has no context");
else if (code == GLFW_CURSOR_UNAVAILABLE)
strcpy(description, "The specified cursor shape is unavailable");
else if (code == GLFW_FEATURE_UNAVAILABLE)
strcpy(description, "The requested feature cannot be implemented for this platform");
else if (code == GLFW_FEATURE_UNIMPLEMENTED)
strcpy(description, "The requested feature has not yet been implemented for this platform");
else if (code == GLFW_PLATFORM_UNAVAILABLE)
strcpy(description, "The requested platform is unavailable");
else
strcpy(description, "ERROR: UNKNOWN GLFW ERROR");
} }
if (_glfw.initialized) if (_glfw.initialized)
@ -484,21 +455,43 @@ GLFWAPI int glfwGetError(const char** description)
return code; return code;
} }
GLFWAPI const char* glfwGetErrorDescription(int code) GLFWAPI void glfwGetErrorDescription(int code, char *description, int descriptionSize)
{ {
_GLFWerror* error; if (description && descriptionSize)
memset(description, 0, descriptionSize);
else
return;
error = _glfw.errorListHead; if (code == GLFW_NOT_INITIALIZED)
strncpy(description, "The GLFW library is not initialized", descriptionSize);
while (error) else if (code == GLFW_NO_CURRENT_CONTEXT)
{ strncpy(description, "There is no current context", descriptionSize);
if (error->code == code) else if (code == GLFW_INVALID_ENUM)
return error->description; strncpy(description, "Invalid argument for enum parameter", descriptionSize);
else if (code == GLFW_INVALID_VALUE)
error = error->next; strncpy(description, "Invalid value for parameter", descriptionSize);
} else if (code == GLFW_OUT_OF_MEMORY)
strncpy(description, "Out of memory", descriptionSize);
return NULL; else if (code == GLFW_API_UNAVAILABLE)
strncpy(description, "The requested API is unavailable", descriptionSize);
else if (code == GLFW_VERSION_UNAVAILABLE)
strncpy(description, "The requested API version is unavailable", descriptionSize);
else if (code == GLFW_PLATFORM_ERROR)
strncpy(description, "A platform-specific error occurred", descriptionSize);
else if (code == GLFW_FORMAT_UNAVAILABLE)
strncpy(description, "The requested format is unavailable", descriptionSize);
else if (code == GLFW_NO_WINDOW_CONTEXT)
strncpy(description, "The specified window has no context", descriptionSize);
else if (code == GLFW_CURSOR_UNAVAILABLE)
strncpy(description, "The specified cursor shape is unavailable", descriptionSize);
else if (code == GLFW_FEATURE_UNAVAILABLE)
strncpy(description, "The requested feature cannot be implemented for this platform", descriptionSize);
else if (code == GLFW_FEATURE_UNIMPLEMENTED)
strncpy(description, "The requested feature has not yet been implemented for this platform", descriptionSize);
else if (code == GLFW_PLATFORM_UNAVAILABLE)
strncpy(description, "The requested platform is unavailable", descriptionSize);
else
strncpy(description, "ERROR: UNKNOWN GLFW ERROR", descriptionSize);
} }
GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun cbfun) GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun cbfun)