From a6ddf68c8af5229e976c0f7888375f139f4f2522 Mon Sep 17 00:00:00 2001 From: TheoryOfNekomata Date: Sat, 18 Feb 2023 08:26:22 +0800 Subject: [PATCH] Genericize compatibility Extract additional platform-specific imports to basic compatibility header. --- CMakeLists.txt | 2 +- .../src/packages/stdinc/IZ_string.mock.h | 2 +- src/packages/compat/IZ_compat.h | 18 +++++++++++++++ src/packages/compat/IZ_windows.h | 22 ------------------- src/packages/io/IZ_io.h | 15 ++++++++----- src/packages/log/IZ_log.h | 9 +++++++- src/packages/stdinc/IZ_string.h | 7 +++++- 7 files changed, 44 insertions(+), 31 deletions(-) create mode 100644 src/packages/compat/IZ_compat.h delete mode 100644 src/packages/compat/IZ_windows.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 62a8ef7..b3a082a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -179,7 +179,7 @@ add_executable( src/packages/log/IZ_log.h src/packages/timer/IZ_timer.c src/packages/timer/IZ_timer.h - src/packages/compat/IZ_windows.h + src/packages/compat/IZ_compat.h src/packages/stdinc/IZ_stdlib.c src/packages/stdinc/IZ_stdlib.h ) diff --git a/__mocks__/src/packages/stdinc/IZ_string.mock.h b/__mocks__/src/packages/stdinc/IZ_string.mock.h index 1de2c04..0a585b4 100644 --- a/__mocks__/src/packages/stdinc/IZ_string.mock.h +++ b/__mocks__/src/packages/stdinc/IZ_string.mock.h @@ -2,7 +2,7 @@ #define IZ_STRING_MOCK_C #include -#include "../../../src/packages/compat/IZ_windows.h" +#include "../../../src/packages/compat/IZ_compat.h" mock(IZ_memset) void* IZ_memset(void* dst, int c, size_t len) { mock_return(IZ_memset) 0; diff --git a/src/packages/compat/IZ_compat.h b/src/packages/compat/IZ_compat.h new file mode 100644 index 0000000..6fbf31e --- /dev/null +++ b/src/packages/compat/IZ_compat.h @@ -0,0 +1,18 @@ +#ifndef IZ_COMPAT_H +#define IZ_COMPAT_H + +#if defined IZ_WINDOWS +#define isatty _isatty +#define fileno _fileno +#endif + +#if defined IZ_UNIX +typedef size_t rsize_t; +typedef int errno_t; +#endif + +#if defined IZ_MACOS +typedef int errno_t; +#endif + +#endif //IZ_COMPAT_H diff --git a/src/packages/compat/IZ_windows.h b/src/packages/compat/IZ_windows.h deleted file mode 100644 index da24f65..0000000 --- a/src/packages/compat/IZ_windows.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef IZ_WINDOWS_H -#define IZ_WINDOWS_H - -#if defined IZ_WINDOWS -#include -#include -#define _isatty isatty -#define _fileno fileno -#endif - -#if defined IZ_UNIX -typedef size_t rsize_t; -typedef int errno_t; -#endif - -#if defined IZ_MACOS -#include - -typedef int errno_t; -#endif - -#endif //IZ_WINDOWS_H diff --git a/src/packages/io/IZ_io.h b/src/packages/io/IZ_io.h index d35f712..16c9227 100644 --- a/src/packages/io/IZ_io.h +++ b/src/packages/io/IZ_io.h @@ -1,16 +1,21 @@ #ifndef IZ_IO_H #define IZ_IO_H -#include -#include -#include -#include "../compat/IZ_windows.h" -#ifdef IZ_UNIX +#if defined IZ_WINDOWS +#include +#include +#elif defined IZ_UNIX #include #elif defined IZ_MACOS #include +#include #endif +#include +#include +#include +#include "../compat/IZ_compat.h" + int IZ_sprintf(char*, size_t, const char*, ...); errno_t IZ_fopen(FILE**, const char*, const char*); diff --git a/src/packages/log/IZ_log.h b/src/packages/log/IZ_log.h index c34402b..0f4b78e 100644 --- a/src/packages/log/IZ_log.h +++ b/src/packages/log/IZ_log.h @@ -16,7 +16,14 @@ #define IZ_LOG_LEVEL_FLAG_WARN #define IZ_LOG_LEVEL_FLAG_ERROR -#include "../compat/IZ_windows.h" +#if defined IZ_WINDOWS +#include +#include +#elif defined IZ_MACOS +#include +#endif + +#include "../compat/IZ_compat.h" #include #include #include diff --git a/src/packages/stdinc/IZ_string.h b/src/packages/stdinc/IZ_string.h index 04f7bba..af05e73 100644 --- a/src/packages/stdinc/IZ_string.h +++ b/src/packages/stdinc/IZ_string.h @@ -2,7 +2,12 @@ #define IZ_STRING_H #include -#include "../compat/IZ_windows.h" +#if defined IZ_WINDOWS +#include +#include +#elif defined IZ_MACOS +#include +#endif errno_t IZ_memcpy(void*, rsize_t, const void*, rsize_t);