wrote c compatible return code structure
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
#include <gryphn/gryphn_utils.h>
|
||||
#include "vector"
|
||||
|
||||
struct gnPlatformCommandBuffer;
|
||||
struct gnOutputDevice;
|
||||
|
@@ -15,41 +15,41 @@ static void* gnRenderingAPILIB;
|
||||
|
||||
#define gnLoadDLLFunction(dll, func, func_name) \
|
||||
gnPlatformLoadDLLFunction(dll, func, func_name); \
|
||||
if (func == nullptr) return gnReturnError(gnString("GN_FUNC_(") + gnString(#func) + ")_NOT_LOADED")
|
||||
if (func == nullptr) return gnReturnError(GN_FUNCTION_NOT_FOUND, gnString("GN_FUNC_(") + gnString(#func) + ")_NOT_LOADED")
|
||||
|
||||
gnReturnCode gnInit(gnRenderingAPI RenderingAPI) {
|
||||
gnString libName = "";
|
||||
|
||||
switch (RenderingAPI) {
|
||||
case GN_RENDERINGAPI_NONE: {
|
||||
return { GN_FAILED, "GN_ERROR_RENDERINGAPI_NONE_UNSUPPORTED" };
|
||||
return gnReturnError(GN_UNSUPPORTED_RENDERING_API, "rendering api_none unsupported");
|
||||
}
|
||||
case GN_RENDERINGAPI_SOFTWARE: {
|
||||
return { GN_FAILED, "GN_ERROR_SOFRWARE_UNSUPPORTED" };
|
||||
return gnReturnError(GN_UNSUPPORTED_RENDERING_API, "rendering api_software unsupported");
|
||||
}
|
||||
case GN_RENDERINGAPI_OPENGL: {
|
||||
return { GN_FAILED, "GN_ERROR_OPENGL_UNSUPPORTED" };
|
||||
return gnReturnError(GN_UNSUPPORTED_RENDERING_API, "rendering api_opengl unsupported");
|
||||
}
|
||||
case GN_RENDERINGAPI_VULKAN: {
|
||||
if (!RenderingAPISupported(GN_RENDERINGAPI_VULKAN)) return { GN_FAILED, "GN_ERROR_VUKAN_UNSUPPORTED" };
|
||||
if (!RenderingAPISupported(GN_RENDERINGAPI_VULKAN)) return gnReturnError(GN_UNSUPPORTED_RENDERING_API, "rendering api vulkan unsupported");
|
||||
libName = "GryphnVulkanImpl";
|
||||
break;
|
||||
}
|
||||
case GN_RENDERINGAPI_DIRECTX11: {
|
||||
return { GN_FAILED, "GN_ERROR_DIRECTX11_UNSUPPORTED" };
|
||||
return gnReturnError(GN_UNSUPPORTED_RENDERING_API, "rendering api directx11 unsupported");
|
||||
}
|
||||
case GN_RENDERINGAPI_DIRECTX12: {
|
||||
return { GN_FAILED, "GN_ERROR_DIRECTX12_UNSUPPORTED" };
|
||||
return gnReturnError(GN_UNSUPPORTED_RENDERING_API, "rendering api directx12 unsupported");
|
||||
}
|
||||
case GN_RENDERINGAPI_METAL: {
|
||||
if (!RenderingAPISupported(GN_RENDERINGAPI_METAL)) return { GN_FAILED, "GN_ERROR_METAL_UNSUPPORTED" };
|
||||
if (!RenderingAPISupported(GN_RENDERINGAPI_METAL)) return gnReturnError(GN_UNSUPPORTED_RENDERING_API, "rendering api metal unsupported");
|
||||
libName = "GryphnMetalImpl";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
gnRenderingAPILIB = gnPlatformLoadDLL(gnString("gryphn/rendering_apis/") + libName);
|
||||
if (!gnRenderingAPILIB) { return gnReturnError("GN_ERROR_UNABLE_TO_LOAD_DLL"); }
|
||||
if (!gnRenderingAPILIB) { return gnReturnError(GN_UNABLE_TO_LOAD_DLL, "GN_ERROR_UNABLE_TO_LOAD_DLL"); }
|
||||
|
||||
gnLoadDLLFunction(gnRenderingAPILIB, gnCreateInstance, "gnCreateInstanceFn");
|
||||
gnLoadDLLFunction(gnRenderingAPILIB, gnDestroyInstance, "gnDestroyInstanceFn");
|
||||
|
@@ -1,5 +0,0 @@
|
||||
#include <utils/gryphn_error_code.h>
|
||||
|
||||
gnString gnGetErrorString() {
|
||||
return lastReturnCode;
|
||||
}
|
@@ -1,22 +1,63 @@
|
||||
#include <utils/gryphn_bool.h>
|
||||
#include <utils/gryphn_access_level.h>
|
||||
#include <vector>
|
||||
#include <utils/strings/gryphn_string.h>
|
||||
// #include <utils/gryphn_bool.h>
|
||||
// #include <utils/gryphn_access_level.h>
|
||||
// #include <vector>
|
||||
// #include <utils/strings/gryphn_string.h>
|
||||
|
||||
enum gnReturnCodeLevel { GN_FAILED = 0, GN_SUCCESS = 1 };
|
||||
// enum gnReturnCodeLevel { GN_FAILED = 0, GN_SUCCESS = 1 };
|
||||
|
||||
inline gnString lastReturnCode = gnCreateString();
|
||||
// inline gnString lastReturnCode = gnCreateString();
|
||||
|
||||
typedef struct gnReturnCode {
|
||||
ACCESS_LEVEL:
|
||||
gnBool success;
|
||||
gnString returnCodeMessage = "";
|
||||
public:
|
||||
bool operator==(gnReturnCodeLevel level) { return success; }
|
||||
gnReturnCode(gnReturnCodeLevel level, gnString message) : success(level), returnCodeMessage(message) { lastReturnCode = returnCodeMessage; }
|
||||
gnReturnCode(gnReturnCodeLevel level) : success(level) { lastReturnCode = returnCodeMessage; }
|
||||
gnReturnCode() { lastReturnCode = returnCodeMessage; }
|
||||
} gnErrorCode;
|
||||
// typedef struct gnReturnCode {
|
||||
// ACCESS_LEVEL:
|
||||
// gnBool success;
|
||||
// gnString returnCodeMessage = "";
|
||||
// public:
|
||||
// bool operator==(gnReturnCodeLevel level) { return success; }
|
||||
// gnReturnCode(gnReturnCodeLevel level, gnString message) : success(level), returnCodeMessage(message) { lastReturnCode = returnCodeMessage; }
|
||||
// gnReturnCode(gnReturnCodeLevel level) : success(level) { lastReturnCode = returnCodeMessage; }
|
||||
// gnReturnCode() { lastReturnCode = returnCodeMessage; }
|
||||
// } gnErrorCode;
|
||||
|
||||
gnString gnGetErrorString();
|
||||
static gnReturnCode gnReturnError(gnString errorMessage) { return { GN_FAILED, errorMessage }; }
|
||||
// gnString gnGetErrorString();
|
||||
// static gnReturnCode gnReturnError(gnString errorMessage) { return { GN_FAILED, errorMessage }; }
|
||||
|
||||
#include "utils/strings/gryphn_string.h"
|
||||
|
||||
typedef enum gnReturnCode {
|
||||
GN_SUCCESS, GN_FAILED, GN_FATAL,
|
||||
GN_ERROR = GN_FAILED
|
||||
} gnReturnCode;
|
||||
|
||||
typedef gnReturnCode gnErrorCode;
|
||||
|
||||
typedef enum gnReturnMessage {
|
||||
GN_UNKNOWN_ERROR,
|
||||
GN_UNKNOWN_FRAMEBUFFER_ATTACHMENT,
|
||||
GN_UNKNOWN_SHADER_MODULE,
|
||||
GN_SHADER_FAILED_TO_COMPILE,
|
||||
GN_UNSUPPORTED_COLOR_FORMAT,
|
||||
GN_UNKNOWN_COLOR_FORMAT,
|
||||
GN_UNSUPPORTED_RENDERING_API,
|
||||
GN_FUNCTION_NOT_FOUND,
|
||||
GN_UNABLE_TO_LOAD_DLL,
|
||||
GN_FAILED_CREATE_DEVICE,
|
||||
GN_FAILED_CREATE_GRAPHICS_PIPELINE,
|
||||
GN_FAILED_CREATE_PRESENTATION_QUEUE,
|
||||
GN_FAILED_TO_CREATE_FRAMEBUFFER,
|
||||
GN_FAILED_CREATE_RENDERPASS,
|
||||
GN_FAILED_CREATE_INSTANCE,
|
||||
GN_FAILED_TO_ATTACH_WINDOW,
|
||||
GN_FAILED_TO_CREATE_IMAGE
|
||||
} gnReturnMessage;
|
||||
|
||||
inline gnString lastReturnAPIMessage = "";
|
||||
inline gnReturnMessage lastReturnMessage = GN_UNKNOWN_ERROR;
|
||||
|
||||
static const gnString gnGetErrorString() { return lastReturnAPIMessage; }
|
||||
static const gnReturnMessage gnGetErrorMessage() { return lastReturnMessage; }
|
||||
|
||||
static gnReturnCode gnReturnError(gnReturnMessage message, gnString errorMessage) {
|
||||
lastReturnAPIMessage = errorMessage;
|
||||
lastReturnMessage = message;
|
||||
return GN_ERROR;
|
||||
}
|
||||
|
Reference in New Issue
Block a user